繁体   English   中英

Pandas:如何查找范围内值的行和列?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM