Python 如何生成数据帧中两列的相关系数作为同一数据帧中的新列变量?
我有一个三列的数据框。ID用作要使用groupby命令的标识符。这里,我想为每个ID生成A和B之间的相关系数。这就是我的数据帧的样子:Python 如何生成数据帧中两列的相关系数作为同一数据帧中的新列变量?,python,pandas,correlation,Python,Pandas,Correlation,我有一个三列的数据框。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 &l
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>
如果有人能帮我,那就太好了!提前感谢。我认为需要通过按位置选择行来删除多索引
使用:
创建映射的Series
by的替代方法,最后将1列数据帧
转换为Series
by:
为什么这是“受保护的”?我可能不理解规则,但还没有被接受/投票表决的答案,单个答案甚至没有1票(甚至没有来自“保护”问题的主持人)…@Ernest Kiwele,因为有2个垃圾答案。已删除。
df['Corr_Coeff'] = df.groupby('ID')[['A','B']].corr()
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
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