有没有一种方法可以在多个列之间建立熊猫关联,并在同一数据帧上创建具有结果的新列?

时间:2019-01-02 09:00:43

标签: python pandas dataframe

我正在设置一个熊猫数据框df1,并根据Excel工作表中的公式创建新列。我需要使用pd.corr函数来查找多个列之间的相关性,并使用结果在同一数据帧df1上创建一个新列。

df1数据进行采样:

trc_2017  trc_2016  trc_2015  tsr_2017 tsr_2016 tsr_2015  roe   
0.21      1.23      2.54      9.42     6.14     -0.01     2.35
1.02      -3.21      0.12     9.32     5.24     6.90      3.29 
-3.02      0.12      1.32     5.02     2.02     32.10     4.32

尝试了以下解决方案:

df['corr'] = df[['trc_2017', 'trc_2016', 'trc_2015']].corr(df[['tsr_2017', 'tsr_2016', 'tsr_2015']])

上述解决方案,但我收到错误消息:

ValueError: The truth value of a DataFrame is ambiguous.

第二种解决方法:

df['corr'] = df[['trc_2017', 'trc_2016', 'trc_2015']].corrwith(df[['tsr_2017', 'tsr_2016', 'tsr_2015']])

赋予df['corr']的所有值为NaN

预期结果:

trc_2017  trc_2016  trc_2015  tsr_2017 tsr_2016 tsr_2015  roe   corr
0.21      1.23      2.54      9.42     6.14     -0.01     2.35   0.11
1.02      -3.21      0.12     9.32     5.24     6.90      3.29   3.21
-3.02      0.12      1.32     5.02     2.02     32.10     4.32   0.12

使用大熊猫查找corr列的相关性的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

rename的两个子集中,将corrwithDataFrame用作相同的列名:

c1 = ['trc_2017', 'trc_2016', 'trc_2015']
c2 = ['tsr_2017', 'tsr_2016', 'tsr_2015']
df['corr'] = df[c1].corrwith(df[c2].rename(columns=dict(zip(c2, c1))), axis=1)
print (df)
   trc_2017  trc_2016  trc_2015  tsr_2017  tsr_2016  tsr_2015   roe      corr
0      0.21      1.23      2.54      9.42      6.14     -0.01  2.35 -0.994782
1      1.02     -3.21      0.12      9.32      5.24      6.90  3.29  0.910052
2     -3.02      0.12      1.32      5.02      2.02     32.10  4.32  0.647252
相关问题