python - Pandas DataFrame Groupby 如何将组作为列表获取并获得特定列的平均值

标签 python pandas dataframe

我有一个数据框 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

最佳答案

您可以使用 groupbyagg :

>>> 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/

相关文章:

python - 在Python中合并2个列表

python - 如果任何列中的值位于之前,则删除行

pandas - 如何在 matplot 上绘制散点趋势线? Python-Pandas

python - 如何在 Pandas 数据帧切片中使用 apply 来设置多列的值

python - 在拆分句子( Pandas )上使用 isin 时如何获得单词的出现?

Python断言风格

python - Pyspark 显示每行具有最低值的列

R - 使用向量列表中的名称的子集数据框列

python - PyCharm - 作者在导入之前出现了吗?

python - 我怎样才能删除变量的这一部分?