我有一个 Pandas DataFrame,它是通过跨变量执行多重关联生成的。
corr = df.apply(lambda s: df.corrwith(s))
print('\n', 'Correlations')
print(corr.to_string())
输出如下所示:
Correlations
A B C D E
A 1.000000 -0.901104 0.662530 -0.772657 0.532606
B -0.901104 1.000000 -0.380257 0.946223 -0.830466
C 0.662530 -0.380257 1.000000 -0.227531 -0.102506
D -0.772657 0.946223 -0.227531 1.000000 -0.888768
E 0.532606 -0.830466 -0.102506 -0.888768 1.000000
但是,这是相关表的一个小样本,可能超过 300 行 x 300 列。我正在尝试找到一种方法来识别特定值范围内相关性的坐标。
例如,+0.25 和 -0.25 之间的相关性。我想要的输出是:
E x C = -0.102506
D x C = -0.227531
在搜索中,我发现了一些无法以连贯方式组合在一起的 pandas 函数: pandas iloc, loc , pandas between
您建议我如何完成此过滤?
最佳答案
使用掩码+DataFrame.where
。由于相关矩阵是对称的,我们将使用 np.triu 来消除重复项。
import numpy as np
corr.where(np.triu((corr.values <= 0.25) & (corr.values >= -0.25))).stack()
C D -0.227531
E -0.102506
dtype: float64
关于python - Pandas:如何查找范围内值的行和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53014579/