我看了以前问过的大多数问题,但无法找到我的问题的答案:
我有以下数据。帧
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
,只是想按年和月求和作为得分。
2条答案
按热度按时间wr98u20j1#
这应该是一种有效的方法:
wa7juj8i2#
要按两列分组并使用Pandas获得另一列的总和,可以使用groupby函数,然后对结果对象调用sum函数。这将按year和month列对数据分组,然后对score列中的值求和。结果输出将是一个包含每组score列总和的序列。