[英]Pandas: how to find row and column for values in a range?
我有一个 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.