Pandas如何按年份分组求和并返回对应年份及每年value总和
你猜测的cumsum()并不适用当前场景,cumsum()是按顺序逐行累计求和,而你需要的是按年份独立分组求和,直接使用pandas多级索引的分组能力就可以实现需求,全程不需要写for循环。
假设你之前代码运行得到的输出结果存储为变量res,直接执行以下代码即可得到预期结果:
res.groupby(level='year').sum()
参数level='year'指定按照多级索引里的year层级做分组,直接对每个年份下的所有value值求和,是pandas原生向量化操作,执行效率很高。
如果需要输出和你示例格式完全一致的带完整行列索引的表格,可以再加一步重置索引操作:
res.groupby(level='year').sum().reset_index()
计算结果验证:
- 1960年:5 → 求和结果为5,符合预期
- 1962年:6+4+7 = 17 → 求和结果为17,符合预期
- 2000年:4 → 求和结果为4,符合预期
- 2020年:7+3+9 = 19 → 求和结果为19,符合预期
内容的提问来源于stack exchange,提问作者Konstantin F
相关产品推荐
相关产品推荐

