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

如何将带DateTime索引的Pandas DataFrame累积值转换为普通频率值

日度累积Pandas DataFrame转当日非累积值实现方法

核心逻辑是计算相邻行累积值的差值,即可得到对应周期的新增非累积值,操作步骤如下:

  • 第一步先确认DataFrame的DateTime索引已经按时间升序排列,避免时序颠倒导致计算结果错误
  • 第二步使用Pandas内置的diff()方法计算相邻行的差值,该方法默认会将第一行的计算结果设为空值,直接用第一行的原始累积值补全即可

单累积列转换代码示例

假设你的累积数据DataFrame命名为cum_df,存储累积值的列名为cum_val,需要生成的非累积日度值列名为daily_val:

import pandas as pd

# 按时间索引升序排序
cum_df = cum_df.sort_index()
# 计算差分并补全第一行空值
cum_df['daily_val'] = cum_df['cum_val'].diff().fillna(cum_df['cum_val'].iloc[0])

多累积列同时转换代码示例

如果DataFrame内所有列都是累积值,可直接对全表执行操作:

non_cum_df = cum_df.diff().fillna(cum_df.iloc[0])

特殊场景说明

如果你的累积值存在固定周期重置规则(比如每月初清零重新累积),需要先按重置周期分组后再执行差分,避免跨周期的差值计算错误。按月度重置的参考代码如下:

cum_df['daily_val'] = cum_df.groupby(cum_df.index.to_period('M'))['cum_val'].diff().fillna(cum_df['cum_val'])

示例对照

原始累积数据表:
带DateTime索引的Pandas DataFrame累积值

转换后的输出结果示例:
输出结果示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:00:00