我有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
,希望有人能给我一些建议。
答案 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})