我有以下数据框
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
答案 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'})