Thursday, 15 April 2010

Python pandas: get elements (index,col) below diagonal in dataframe -



Python pandas: get elements (index,col) below diagonal in dataframe -

i have pandas dataframe, df.

i want extract list of (col,index) in df value @ (col,index) >.95. additionally, want status on fact in lower diagonal of df, not including diagonal itself. (if helps, it's correlation df, diagonals 1's not interested in.

how can this?

in [71]: df = dataframe(np.arange(25).reshape(5,5)) in [72]: df out[72]: 0 1 2 3 4 0 0 1 2 3 4 1 5 6 7 8 9 2 10 11 12 13 14 3 15 16 17 18 19 4 20 21 22 23 24

this masks upper triangle (include diagonal)

in [73]: mask = np.ones(df.shape,dtype='bool') in [74]: mask[np.triu_indices(len(df))] = false in [75]: mask out[75]: array([[false, false, false, false, false], [ true, false, false, false, false], [ true, true, false, false, false], [ true, true, true, false, false], [ true, true, true, true, false]], dtype=bool)

simulating status (> 0.95)

in [76]: df>16 out[76]: 0 1 2 3 4 0 false false false false false 1 false false false false false 2 false false false false false 3 false false true true true 4 true true true true true

this prob form want result

in [77]: df[(df>16)&mask] out[77]: 0 1 2 3 4 0 nan nan nan nan nan 1 nan nan nan nan nan 2 nan nan nan nan nan 3 nan nan 17 nan nan 4 20 21 22 23 nan

if want positional values

in [78]: x = ((df>16)&mask).values.nonzero() in [79]: zip(x[0],x[1]) out[79]: [(3, 2), (4, 0), (4, 1), (4, 2), (4, 3)]

python pandas correlation

No comments:

Post a Comment