Pandas:按两列分组以获得另一列的总和

标签 pandas group-by

我查看了之前提出的大部分问题,但无法找到我的问题的答案:

我有以下 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并且只想按年月求和作为分数。

最佳答案

这应该是一种有效的方法:

sum_df = df.groupby(['year','month']).agg({'score': 'sum', 'num_attempts': 'sum'})

关于Pandas:按两列分组以获得另一列的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40553002/

相关文章:

Python Pandas : Why is numpy so much faster than Pandas for column assignment? 我可以进一步优化吗?

python - Pandas - 如何使用带有索引的字典对列的行进行排序

r - 如何使用现有的虚拟变量创建一个新虚拟变量,该变量对于组内的某些主要观察值采用值 1

python - 使用多列的 Pandas groupby 函数

MySQL Left Join + Min

python - 设置蛾缩写的语言

python - 使用 Selenium Scraper (Python) 时消除 % 符号

python - 按星期几对 Python DataFrame 进行排序

python - Pandas groupby - 对每组中的一半记录应用不同的函数

sql - 在同一列上迭代时计算持续时间