python - 有没有办法在多个列之间进行 pandas 关联并在同一数据帧上创建结果新列?

标签 python pandas dataframe

我正在设置 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使用 renameDataFrame 的两个子集中的相同列名称:

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/

相关文章:

python - 迁移时 Django MySQL 错误

python - 使用 Sqlite 在 pandas SQL API 上执行 REGEX 函数时出现导入错误 : Using URI string without sqlalchemy installed,

python - Pandas 在非唯一值上自连接

python - 根据另一个数据帧的范围从数据帧中选择最小值

python - 如何填充 NAN "ignoring"索引?

python - 如何在Python中检测和旋转图像

python - RHEL 中的 python-argparse 包在哪里?

python - 在 pandas 中重新采样后进行舍入

在 pandas Dataframe 的任意切片中以 Python 方式递增数字

python - 将 json 数据集转换为 pandas 数据框