按年份分组计算power_kwh列的cumsum(累计求和)问题
问题分析与解决方案
错误原因
你之前的代码testdf['results'] = testdf.groupby(['year','month'])['power_kwh'].cumsum()同时按year和month分组,这意味着每个分组是单一年份+单一月份的独立集合。每个分组内只有对应月份的数据,cumsum()自然只会返回原列值,无法实现年内跨月份的累计求和。
正确解决方案
场景1:每个年份-月份组合仅一条数据
先确保数据按年份和月份排序(保证累计顺序符合时间逻辑),再仅按year分组计算累计求和:
# 按年份、月份排序,确保累计顺序正确 testdf = testdf.sort_values(by=['year', 'month']) # 仅按year分组,计算年内累计用电量 testdf['cumsum_power_kwh'] = testdf.groupby(['year'])['power_kwh'].cumsum()
场景2:同一个年份-月份有多条数据
如果同一月份有多条power_kwh记录,需要先按月聚合求和,再计算年内累计:
# 第一步:按年份、月份分组,计算每月总用电量 monthly_summary = testdf.groupby(['year', 'month'])['power_kwh'].sum().reset_index() # 第二步:按年份排序后,计算年内累计 monthly_summary['cumsum_power_kwh'] = monthly_summary.groupby(['year'])['power_kwh'].cumsum() # 可选:将累计结果合并回原DataFrame testdf = testdf.merge(monthly_summary[['year', 'month', 'cumsum_power_kwh']], on=['year', 'month'])
内容的提问来源于stack exchange,提问作者user2100039
相关产品推荐
相关产品推荐

