簡體   English   中英

如何在同一數據框中生成數據框兩列的相關系數作為新的列變量?

[英]How do I generate the Correlation Coefficient of two columns of a dataframe as a new column variable in the same dataframe?

我有一個包含三列的數據框。 ID用作我要在其中使用groupby命令的標識符。 在這里,我想為每個ID生成A和B之間的相關系數。 這是我的數據框的樣子:

ID  A  B
1   5  7
1   3  4
2   4  5
2   7  6
2   9  1

我想將其轉換為以下數據框:

ID  A  B  Corr_Coeff
1   5  7  <Value 1> 
1   3  4  <Value 1>
2   4  5  <Value 2> 
2   7  6  <Value 2>
2   9  1  <Value 2>

這是我當前正在使用的代碼,但似乎無法正常工作:

df['Corr_Coeff'] = df.groupby('ID')[['A','B']].corr()

如果有人可以在這里幫助我,那就太好了! 提前致謝。

我相信需要通過iloc按位置選擇行的map ,以刪除MultiIndex使用reset_index

df1 = df.groupby('ID')[['A','B']].corr()
print (df1)
             A         B
ID                      
1  A  1.000000  1.000000
   B  1.000000  1.000000
2  A  1.000000 -0.675845
   B -0.675845  1.000000

df['corr'] = df['ID'].map(df1.iloc[0::2, 1].reset_index(level=1, drop=True))
print (df)
   ID  A  B      corr
0   1  5  7  1.000000
1   1  3  4  1.000000
2   2  4  5 -0.675845
3   2  7  6 -0.675845
4   2  9  1 -0.675845

替代為創建映射Seriescorrwith ,最后轉換1 column Dataframe ,以SeriesDataFrame.squeeze

s = (df[['A']].groupby(df['ID']).corrwith(df['B'])).squeeze()
print(s)
ID
1    1.000000
2   -0.675845
Name: A, dtype: float64

df['corr'] = df['ID'].map(s)
print (df)
   ID  A  B      corr
0   1  5  7  1.000000
1   1  3  4  1.000000
2   2  4  5 -0.675845
3   2  7  6 -0.675845
4   2  9  1 -0.675845

暫無
暫無

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

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