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

如何在Pandas DataFrame中为4年周期生成循环日序号?

实现按CyclePhase重置的递增计数列(Day)

针对你的需求,用Pandas的矢量化操作是最优方案,避免循环带来的性能损耗,步骤如下:

核心思路

先识别出CyclePhase从3变为0的重置触发点,基于这些点将数据划分成不同的周期组,最后在每个组内生成从1开始的递增计数。

代码实现

import pandas as pd

# 假设你的时间序列DataFrame名为df
# 1. 标记重置触发点:当前行CyclePhase为0且前一行是3
reset_points = (df['CyclePhase'] == 0) & (df['CyclePhase'].shift(1) == 3)

# 2. 生成周期组ID:每次触发重置时组ID递增
cycle_groups = reset_points.cumsum()

# 3. 每个周期组内生成从1开始的计数
df['Day'] = df.groupby(cycle_groups).cumcount() + 1

代码说明

  • reset_points:通过shift(1)获取前一行的CyclePhase值,精准定位需要重置计数的分界点。
  • cycle_groups:对重置标记做累加,让每个完整的周期拥有唯一的组ID。
  • cumcount() + 1:cumcount()会在每个组内从0开始计数,加1后得到从1起始的Day列。

该方法全程用Pandas内置的矢量化运算处理,性能远高于循环遍历,非常适合大规模时间序列数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:59:55