pandas 聚合后删除组 header

Removing group header after pandas aggregation

假设我有以下内容:

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

dummy                    
1      0.285833  0.028583

如何删除 "returns" header?这样我就有了一个包含列 'sum' 和 'mean'?

的数据框

使用-

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

降低顶部列级别

result = df.groupby("dummy").agg({"returns": [np.mean, np.sum]})
result.columns = result.columns.get_level_values(1)

如果一开始就可以避免创建关卡,您甚至不必在分组后删除关卡。在您感兴趣的栏目上致电 agg -

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

演示

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

或者,使用 numpy 的函数 -

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

       mean  sum
dummy           
1        50  100
2       150  300