pandas聚合后删除组头

ita*_*oot 2 python pandas pandas-groupby

假设我有以下内容:

In [20]: df.groupby("dummy").agg({"returns": [np.mean, np.sum]})
Out[20]: 
        returns          
            sum      mean

dummy                    
1      0.285833  0.028583
Run Code Online (Sandbox Code Playgroud)

如何删除“退货”标题?这样我就有一个包含“总和”和“平均值”列的数据框?

小智 7

使用 -

df.columns = df.columns.droplevel(0)

降低顶部列级别


cs9*_*s95 5

如果您可以首先避免创建级别,那么您甚至不需要在分组后删除该级别。致电agg您感兴趣的专栏 -

df.groupby("dummy")['returns'].agg(['mean', 'sum'])
Run Code Online (Sandbox Code Playgroud)

演示

df = pd.DataFrame({'dummy':[1, 1, 2, 2], 'returns' : [50, 50, 100, 200]})
df
   dummy  returns
0      1       50
1      1       50
2      2      100
3      2      200

df.groupby("dummy")['returns'].agg(['mean', 'sum'])

       mean  sum
dummy           
1        50  100
2       150  300
Run Code Online (Sandbox Code Playgroud)

或者,使用 numpy 的函数 -

df.groupby("dummy")['returns'].agg([np.mean, np.sum])

       mean  sum
dummy           
1        50  100
2       150  300
Run Code Online (Sandbox Code Playgroud)