You need to enable JavaScript to run this app. 如何对依赖前一行取值的Pandas代码实现无apply向量化处理
优惠活动
大模型
产品
解决方案
定价
更多

如何对依赖前一行取值的Pandas代码实现无apply向量化处理

Pandas 向量化实现需求方案

完全可以不用遍历、不用apply,纯向量化操作即可实现,性能远高于iterrows迭代方案。

核心实现逻辑

按ids分组后通过移位+累积求和判断当前行之前是否出现过ftest=1的记录,刚好匹配你的需求:

  • 移位操作将ftest的值往后偏移一行,保证首次出现ftest=1的行不会被自己命中
  • 累积求和后只要结果大于0,说明当前行之前已经出现过ftest=1,标记为1即可

实现代码

id_df['has_hist'] = (
    id_df.groupby('ids')['ftest']
    .shift(1)
    .fillna(0)
    .groupby(id_df['ids'])
    .cumsum()
    .gt(0)
    .astype(int)
)

逻辑验证

我们可以用测试用例验证和你原有迭代逻辑完全一致:
测试输入数据:

idsftest预期has_hist
100
110
101
111
210
201

运行上述向量化代码后输出的has_hist和预期完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 15:54:05