You need to enable JavaScript to run this app. 如何用Pandas实现基于滞后变量的条件累加运行计数
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas实现基于滞后变量的条件累加运行计数

Pandas实现条件累加运行计数

核心逻辑

  • 逐行对比当前value与滞后值lag_value的大小关系,匹配规则生成对应增量:当前值大于滞后值时增量为1,当前值小于滞后值时增量为-1,二者相等时增量为0
  • 首行无有效滞后值,增量按0处理,对全列增量做累积求和,即可得到符合规则的运行计数,计算结果与预定义的objective列完全匹配

代码实现

推荐写法(向量化运算,性能最优)

借助差值的符号直接生成增量,无需显式分支判断:

import numpy as np
# 处理首行缺失滞后值的空值后,直接计算累积和
df['run_count'] = np.sign(df['value'] - df['lag_value']).fillna(0).cumsum()

显式规则匹配写法

如果需要清晰对照规则编写判断逻辑,可使用多条件分支生成增量:

import numpy as np
df['increment'] = np.select(
    condlist=[df['value'] > df['lag_value'], df['value'] < df['lag_value']],
    choicelist=[1, -1],
    default=0  # 相等、首行无滞后值的场景,增量为0
)
df['run_count'] = df['increment'].cumsum()

结果校验

两种写法生成的run_count列与objective列取值完全一致,逐行匹配关系如下:

datevaluelag_valuerun_countobjective
2021-01-011NaN00
2021-01-021100
2021-01-032111
2021-01-041200
2021-01-052111
2021-01-062211
2021-01-071200
2021-01-082111
2021-01-093222

这类向量化实现不需要逐行循环判断,处理十万行以上规模的数据集时,性能比遍历写法高几个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 13:15:05