2014-09-29 136 views
0

我有一个DataFrame df,由(age, height)组成。我希望看到的高度的平均值如何随着年龄变化,所以我组dfage,并尝试形成新DataFrame new_df(age, mean_height)组成,代码低于:Python熊猫群体聚合

groups = df.groupby('age') 
new_df = groups.agg({'height' : np.mean, 
        'age' : # HOW to add age?}) 

,但我不知道该怎么追加agenew_df,希望任何人都可以给我一些建议。

回答

1

年龄是汇总数据框的索引:

In [95]: df = DataFrame({'age':[10,10,20,20,20], 'height':[140,150,145, 190,200]}) 

In [96]: df 
Out[96]: 
    age height 
0 10  140 
1 10  150 
2 20  145 
3 20  190 
4 20  200 

In [97]: groups = df.groupby('age') 

In [98]: groups.agg({'height':np.mean}) 
Out[98]: 
     height 
age    
10 145.000000 
20 178.333333 

而且df.groupby('age').mean()将达到同样的效果。如果您希望将其作为列而不是索引,请添加对reset_index()的呼叫。

作为替代方案,您可以拨打groupbyas_index=False

groups = df.groupby('age', as_index=False) 
groups.agg({'heigt': np.mean}) 
+0

是的,你说得对。 – Alcott 2014-09-29 06:49:24