You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python pandas基于groupby()实现按月重置的累计求和方法

Pandas按自然月重置分组累计计数实现

问题原因

原有代码仅按electronics维度做二级分组累加,未将「自然月」作为分组截断维度,cumsum()会在单个electronics分组内持续累加所有日期的计数,不会在跨月时自动重置,因此出现跨月累计值不符合预期的问题。

修复逻辑

  • 先将date字段转为标准datetime类型,避免字符串格式导致的月份提取、排序错误
  • 从日期字段提取「年-月」维度,作为累计值重置的分组标识
  • 先统计每个电子产品每日的ID计数,再按「电子产品+年-月」分组做组内累计,即可实现跨月自动从0重新计算

可直接运行的代码

import pandas as pd

# 日期格式转换
test['date'] = pd.to_datetime(test['date'])
# 提取年月维度作为累计重置标记
test['year_month'] = test['date'].dt.to_period('M')

# 先统计每日单品类的ID数量
daily_stat = test.groupby(
    ['electronics', 'year_month', 'date']
)['id'].count().reset_index(name='daily_count')
# 按品类+年月分组做组内累计,跨月自动重置
daily_stat['month_cum_count'] = daily_stat.groupby(
    ['electronics', 'year_month']
)['daily_count'].cumsum()

结果匹配说明

按上述逻辑计算:

  • 2022年5月所有记录归属2022-05分组,累计结果和你之前的正确计算结果完全一致
  • 2022-06-01归属新的2022-06分组,累加当日Laptop记录数2,累计值为2,符合预期
  • 2022-06-02在2022-06分组内累加当日新增3条记录,累计值为2+3=5,符合预期

内容的提问来源于stack exchange,提问作者Data-7scientist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 23:13:00