我想以一种有效的方式,使y介于x1和y中的三列之间。

看来pd.corrwith()仅能为具有完全相同的列标签的列计算此值,例如x和y。

这似乎有点不切实际,因为我认为计算不同变量之间的相关性将是一个普遍的问题。

In [1]: import pandas as pd; import numpy as np

In [2]: x = pd.DataFrame(np.random.randn(5,3),columns=['A','B','C'])

In [3]: y = pd.DataFrame(np.random.randn(5,3),columns=['A','B','C'])

In [4]: x1 = pd.DataFrame(x.ix[:,0])

In [5]: x.corrwith(y)
Out[5]:
A   -0.752631
B   -0.525705
C    0.516071
dtype: float64

In [6]: x1.corrwith(y)
Out[6]:
A   -0.752631
B         NaN
C         NaN
dtype: float64

最佳答案

您可以使用DataFrame.corrwith(Series)而不是DataFrame.corrwith(DataFrame)完成所需的操作:

In [203]: x1 = x['A']

In [204]: y.corrwith(x1)
Out[204]:
A    0.347629
B   -0.480474
C   -0.729303
dtype: float64

或者,您可以按如下所示形成x的每一列与y的每一列之间的相关性矩阵:
In [214]: pd.expanding_corr(x, y, pairwise=True).iloc[-1, :, :]
Out[214]:
          A         B         C
A  0.347629 -0.480474 -0.729303
B -0.334814  0.778019  0.654583
C -0.453273  0.212057  0.149544

las DataFrame.corrwith()没有pairwise=True选项。

关于python - pd.corrwith在具有不同列名称的pandas数据帧上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27079249/

10-10 07:44