我有一个数据帧形式的相关矩阵。类似的东西:
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)
答案 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")
如果您要删除没有匹配的列。