我正在设置一个熊猫数据框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
列的相关性的最佳方法是什么?
答案 0 :(得分:2)
在rename
的两个子集中,将corrwith
与DataFrame
用作相同的列名:
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