Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何生成数据帧中两列的相关系数作为同一数据帧中的新列变量?_Python_Pandas_Correlation - Fatal编程技术网

Python 如何生成数据帧中两列的相关系数作为同一数据帧中的新列变量?

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用作要使用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>
如果有人能帮我,那就太好了!提前感谢。

我认为需要通过按位置选择行来删除
多索引
使用:

创建映射的
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