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

Pandas DataFrame按Cycle分组实现重置式累计时间计算

问题根因

原代码先对全量Total Time做全局差分,再按周期分组累加,存在两个逻辑漏洞:

  • 跨周期的相邻行时间差会被划入新周期的首个差分结果,导致新周期初始值不为0
  • 没有以每个周期自身的起始时间作为累计基准,无法实现周期切换时计数器完全重置
修正方案

不需要做全局差分+分组累加,直接以每个周期内第一条记录的Total Time作为该周期的计时零点,每行时间减去所属周期的零点时间,即可得到准确的周期内累计时长,天然满足重置要求。

实现代码
import pandas as pd

df = pd.DataFrame({"Cycle": [1,1,1,2,2,2,2,3,3,3,4,4,4,5,5,5,5],
                   "Total Time": [0,0.2,0.2,0.4,0.4,0.7,0.7,1.0,1.0,1.2,1.3,1.3,1.5,1.6,1.6,1.8,1.8]})

# 取每个周期第一条记录的时间作为周期起始基准,当前时间减基准值即周期内累计时长
df['Cycle Time'] = df['Total Time'] - df.groupby('Cycle')['Total Time'].transform('first')

print(df['Cycle Time'])
运行输出
0     0.0
1     0.2
2     0.2
3     0.0
4     0.0
5     0.3
6     0.3
7     0.0
8     0.0
9     0.2
10    0.0
11    0.0
12    0.2
13    0.0
14    0.0
15    0.2
16    0.2
Name: Cycle Time, dtype: float64

输出结果和预期完全一致,不存在跨周期计算误差,周期切换时首行值自动重置为0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:36:21