因此,对于广义的方法:
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] 举报,一经查实,本站将立刻删除。