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

Python实现每月初重置累计计数至零的技术求助

解决方案

核心思路

要实现每月初重置累计计数,需按月份分组计算累计差值,而非全局累计。先将日期转为可分组的年月周期,再在每个月内单独计算X-Y的累计值,最后套用原公式生成结果。

代码实现

import pandas as pd

# 确保Date列为datetime类型(若未转换)
df1['Date'] = pd.to_datetime(df1['Date'])

# 按年月分组,计算组内(X-Y)的累计值并移位填充
cum_diff = df1.groupby(df1['Date'].dt.to_period('M')).apply(
    lambda group: (group['X'] - group['Y']).cumsum().shift(1).fillna(0)
).reset_index(level=0, drop=True)

# 生成最终DataFrame
df_final = df1.copy()
df_final['X'] = df_final['X'] + cum_diff

结果验证

运行后df_final将完全匹配目标输出:

DateXY
2021-04-2544
2021-04-2600
2021-04-2700
2021-04-285653
2021-04-2930
2021-04-3040
2021-05-0100
2021-05-0250
2021-05-03105
2021-05-0450

关键说明

  • dt.to_period('M'):将日期转换为年月周期,确保同一月份的数据被分到同一组,实现每月重置。
  • groupby.apply(...):在每个月组内单独计算累计差值,避免跨月份的累计传递。
  • shift(1).fillna(0):将前一天的累计值移到当前行,每月第一天的累计值填充为0,符合月初重置的要求。

内容的提问来源于stack exchange,提问作者user17582908

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:57:17