簡體   English   中英

有沒有一種方法可以在多個列之間建立熊貓關聯,並在同一數據幀上創建具有結果的新列?

[英]Is there a way to do pandas correlation between multiple columns and create new column with result on the same 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列的相關性的最佳方法是什么?

使用corrwithrename為兩個子集相同的列名DataFrame S:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM