如何对带有MultiIndex列的Pandas DataFrame按外部key分组聚合
问题分析
你之前的merge写法失效,核心原因是拥有多级列的DataFrame A和单级列的DataFrame B合并后,列的层级结构不统一,groupby('key')无法正常识别单列作为分组键。
最优解法(无需合并)
因为A和B的行索引完全对齐,直接将B的key列作为分组依据传入groupby即可,会完整保留A的多级列结构:
import pandas as pd result = A.groupby(B['key']).sum()
适配merge的写法
如果你的实际场景中两个表索引不完全对齐,必须走合并流程,可以调整写法如下:
# 合并后将key设置为行索引,再按索引层级分组求和 result = pd.merge(A, B, left_index=True, right_index=True)\ .set_index('key')\ .groupby(level='key').sum()
以上两种方法都可以得到你期望的输出结果:
foo bar baz 1 4 6 2 12 14
内容的提问来源于stack exchange,提问作者Christian Brinch
相关产品推荐
相关产品推荐

