根据条件从任何列/行中选择值

时间:2015-07-31 16:07:49

标签: python pandas

我有一个数据帧形式的相关矩阵。类似的东西:

       xyz   abc  def
xyz    1     0.1  -0.2
abc    0.1   1    0.3
def    -0.2  0.3  1

我需要能够选择高于或低于特定阈值的所有值,但当然它们可以位于任何行或列中。

例如,选择大于0.2的所有值。有两个结果:

(def,abc)和(abc,def)

我不确定如何执行此操作,因为它涉及根据每行/每列中的条件搜索值。理想情况下,输出应采用易于识别对的格式(例如:元组列表或类似内容)

编辑:哦,当然所有相同的列/行也会出现在上面例子的结果中(即:xyz / xyz,abc / abc,def / def)

3 个答案:

答案 0 :(得分:2)

这是使用 source+=1 屏蔽上三角矩阵并通过np.triu重塑相关矩阵的一种方法。

stack

答案 1 :(得分:1)

将2d变为1d((row,col),val的元组)。按val排序。检索(row,col)的元组,其val> 0.2

答案 2 :(得分:1)

假设您的数据框是" df"你的门槛是"价值"你可以这样做:

df[df>value] or

df[df>value].dropna(axis=1, how="all")如果您要删除没有匹配的列。