我有一个数据框 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
关于python - Pandas DataFrame Groupby 如何将组作为列表获取并获得特定列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66301106/