我有一个数据框架df
p m r
p1 m1 120
p1 m2 34
p1 m3 56
p2 m4 54
p2 m5 58
我需要把p上的数据分组,得到r的平均值,输出应该是这样的:
p m r
p1 [m1,m2,m3] 70
p2 [m4,m5] 56
您可以使用groupby
和agg
:
>>> df.groupby('p').agg({'m': [list], 'r': ['mean']}).droplevel(1, axis=1)
m r
p
p1 [m1, m2, m3] 70
p2 [m4, m5] 56
或
>>> df.groupby('p').agg({'m': [list], 'r': ['mean']}).droplevel(1, axis=1).reset_index()
p m r
0 p1 [m1, m2, m3] 70
1 p2 [m4, m5] 56
或
>>> df.groupby('p', as_index=False).agg(m=('m', list), r=('r','mean'))
p m r
0 p1 [m1, m2, m3] 70
1 p2 [m4, m5] 56