回答:GroupBy带level和axis参数
这里不需要lambda,也不需要显式查询df.columns;^{}接受可以与axis参数一起指定的level参数。我觉得这更干净# Setup
np.random.seed(0)
df = pd.DataFrame(np.random.choice(50, (5, 5)), columns=list('AABBB'))
df
A A B B B
0 44 47 0 3 3
1 39 9 19 21 36
2 23 6 24 24 12
3 1 38 39 23 46
4 24 17 37 25 13
df.groupby(level=0, axis=1).sum()
A B
0 91 6
1 48 76
2 29 60
3 39 108
4 41 75
处理MultiIndex列
另一个需要考虑的情况是在处理MultiIndex列时。考虑df.columns = pd.MultiIndex.from_arrays([['one']*3 + ['two']*2, df.columns])
df
one two
A A B B B
0 44 47 0 3 3
1 39 9 19 21 36
2 23 6 24 24 12
3 1 38 39 23 46
4 24 17 37 25 13
要跨上层执行聚合,请使用df.groupby(level=1, axis=1).sum()