熊猫:从groupby创建数据框,然后将sum和mean分别应用于不同的列

时间:2018-11-20 07:02:35

标签: python pandas pandas-groupby

我有以下数据框

      medal      number Age 
      Gold        5     25
      Silver      4     30
      Bronze      3     45
      Gold        1     23
      Silver      2     12
      Bronze      3     16

而且,我正在尝试按奖牌分组,以获取“数字”和“年龄”的平均值。我可以分两行来做,但是如何用pandas groupby单行来做。

我可以一次用

进行1次操作
df.groupby(['medal'])['Age'].mean()

df.groupby(['medal'])['number'].sum()

然后可能合并,这是一个漫长的过程。那么如何以熊猫的方式实现它

下面是所需的输出

       medal   number   Age
      Bronze     6      30.5
      Gold       6      24.0
      Silver     6      21.0

2 个答案:

答案 0 :(得分:2)

按字典聚合具有聚合功能的列名称,并在输出as_index=False中为medal中的列添加DataFrame

df1 = df.groupby('medal', as_index=False).agg({'Age': 'mean','number':'sum'})
print (df1)
    medal   Age  number
0  Bronze  30.5       6
1    Gold  24.0       6
2  Silver  21.0       6

答案 1 :(得分:1)

在groupby上使用agg方法和字典,就像这样:

df.groupby(['medal']).agg({'number': 'sum', 'Age':'mean'})