python – 如何将聚合输出合并回原始数据帧

因此,对于广义的方法:

df= [['A' , 'B']] (dataframe is actually bigger but for simplicity)

SC = df[['A','B']].groupby('A').agg({'B': ['mean', 'std']})

我正在尝试将此输出恢复为原始df,因此输出可以是:

df=[['A','B','mean of B','std of B']]

我试过了:pd.merge(df,SC,on = None),
得到错误:

“MergeError: No common columns to perform merge on”

如果可能的话,可以非常感谢任何帮助.

谢谢

解决方法:

我想你只需要specify the columns to merge on

df.merge(SC, left_on = 'A', right_index=True)

例:

# Original Dataframe (randomly created):
>>> df
   A  B
0  b  8
1  a  8
2  a  1
3  b  9
4  b  2
5  b  9
6  b  4
7  a  9
8  a  0
9  b  8

# The result of your "SC" object created by groupby and agg
>>> SC
          B          
       mean       std
A                    
a  4.500000  4.654747
b  6.666667  2.943920

# Merge them together on the appropriate columns:
>>> df.merge(SC, left_on = 'A', right_index=True)
   A  B  (B, mean)  (B, std)
0  b  8   6.666667  2.943920
3  b  9   6.666667  2.943920
4  b  2   6.666667  2.943920
5  b  9   6.666667  2.943920
6  b  4   6.666667  2.943920
9  b  8   6.666667  2.943920
1  a  8   4.500000  4.654747
2  a  1   4.500000  4.654747
7  a  9   4.500000  4.654747
8  a  0   4.500000  4.654747

如果需要,只需添加.sort_index,即可按原始顺序获取合并的数据框:

df.merge(SC, left_on = 'A', right_index=True).sort_index()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐