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