我看大部分以前问过的问题,但没能找到我的问题的答案的总和:熊猫:集团由两列得到另一列
我有以下data.frame
id year month score num_attempts
0 483625 2010 01 50 1
1 967799 2009 03 50 1
2 213473 2005 09 100 1
3 498110 2010 12 60 1
5 187243 2010 01 100 1
6 508311 2005 10 15 1
7 486688 2005 10 50 1
8 212550 2005 10 500 1
10 136701 2005 09 25 1
11 471651 2010 01 50 1
我希望得到以下数据帧
year month sum_score sum_num_attempts
2009 03 50 1
2005 09 125 2
2010 12 60 1
2010 01 200 2
2005 10 565 3
这里是我的尝试:
sum_df = df.groupby(by=['year','month'])['score'].sum()
但这看起来效率和正确。如果我有多个列需要聚合,这看起来像一个非常昂贵的电话。例如,如果我有另一列num_attempts
,只想按年份总和作为分数。
你能否解释一下为什么你认为这是一个广阔的电话,如果你想保持它在集团化运作,你会用'num_attempts'做什么呢? – Boud
@MaxU不确定我是否理解使用'as_index = False,那是干什么的? –
抱歉我的第一条评论 - 我误解了你。有什么问题:'df.groupby(['year','month'])[['score','num_attempts']]。sum()'或'df.groupby(['year','month' ])。agg({'score':'sum','num_attempts':'max'})'? – MaxU