简体   繁体   English

熊猫聚合后删除组头

[英]Removing group header after pandas aggregation

Suppose I have the following: 假设我有以下内容:

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

dummy                    
1      0.285833  0.028583

How do I remove the "returns" header? 如何删除“ returns”标题? So that I have a dataframe with columns 'sum' and 'mean'? 这样我有一个数据框,列为“ sum”和“ mean”?

You don't even to remove the level after grouping if you can avoid creating it in the first place. 如果可以避免一开始就创建该关卡,甚至在分组后都不会删除它。 Call agg on your column of interest - 在您感兴趣的列上调用agg

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

Demo 演示版

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

Alternatively, using numpy's functions - 或者,使用numpy的函数-

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

       mean  sum
dummy           
1        50  100
2       150  300

Use - 采用 -

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

To drop the top column level 降低顶层栏位

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM