I have following dataframe:
import pandas as pd
df = pd.DataFrame(data=[[1,2,3,4,5,6,1,2,3], [7,8,9,10,11,12,7,8,9], [13,14,15,16,17,18,4,5,6]], index=pd.date_range('2004-01-01', '2004-01-03'))
df.columns = pd.MultiIndex.from_product([['x', 'y', 'z'], list('abc')])
df
x y z
a b c a b c a b c
2004-01-01 1 2 3 4 5 6 1 2 3
2004-01-02 7 8 9 10 11 12 7 8 9
2004-01-03 13 14 15 16 17 18 4 5 6
我想在第一层级(level=0)对列进行分组求和,希望得到以下结果:
(x+z) y
a b c a b c
2004-01-01 2 4 6 4 5 6
2004-01-02 14 16 18 10 11 12
2004-01-03 17 19 21 16 17 18
我尝试过的:
mapping = {'x': 'r1', 'y': 'r2', 'z': 'r1'}
df.groupby(mapping, axis=1, level=0).apply(lambda g: g.sum(axis=1, level=1))
但我遇到了一个错误。
感谢任何建议。