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

Pandas中如何根据TimeDelta规则无需循环实现周期性标签标注

解决方案

实现逻辑

完全基于Pandas向量化操作实现,无任何循环,性能适配大规模时间序列场景:

  • 划分重置块:通过cumsum标记所有TimeDelta≥6的位置,每遇到一个符合条件的行,块编号+1,同一块内的标签计数共享上下文
  • 生成递增掩码:仅当1<TimeDelta<6时标签需要+1,其余情况保持上一步的标签值
  • 循环计数逻辑:按块分组计算累计增量,对累计结果取模3后+1,自动实现1-3的循环计数,无需额外判断封顶规则

完整代码

import pandas as pd

data = [[1, 1, 0], 
        [2, 1, 1], 
        [4, 1, 2],
        [5, 1, 1],
        [7, 1, 2],
        [8, 1, 1],
        [14, 1, 6],
        [15, 1, 1],
        [17, 1, 2],
       ]

df = pd.DataFrame(data, columns = ['time', 'parameter_1', 'TimeDelta'])

# 划分重置块
blocks = df['TimeDelta'].ge(6).cumsum()
# 生成需要递增的掩码
incr_mask = df['TimeDelta'].between(1, 6, inclusive='neither')
# 分组计算累计增量后取模实现1-3循环
df['label'] = incr_mask.groupby(blocks).cumsum().mod(3).add(1)

print(df)

输出结果

索引timeparameter_1TimeDeltalabel
01101
12111
24122
35112
47123
58113
614161
715111
817122

内容的提问来源于stack exchange,提问作者Adler Müller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:36:03