我正在设置 pandas 数据框 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
使用 pandas 查找列 corr
的相关性的最佳方法是什么?
最佳答案
使用corrwith
使用 rename
为 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
关于python - 有没有办法在多个列之间进行 pandas 关联并在同一数据帧上创建结果新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54003584/