Python pandas groupby聚合

时间:2014-09-29 06:31:27

标签: python pandas group-by aggregation

我有DataFrame df,由(age, height)组成。我想知道高度的均值如何随年龄而变化,因此我将df分组为age并尝试组建一个由DataFrame new_df组成的新(age, mean_height),代码如下:

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

但我不知道如何将age附加到new_df,希望有人能给我一些建议。

1 个答案:

答案 0 :(得分:2)

年龄是聚合数据框的索引:

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()的调用。

作为替代方案,您可以使用groupby

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