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

如何在Pandas中高效生成条件递增的序号列?

高效实现分组递增序号(针对大规模DataFrame)

针对你这个需求,矢量化操作是处理大规模数据的最优解——完全避开Python级别的循环,利用pandas底层的C实现来提速,百万级数据也能轻松搞定。

核心思路

我们可以先把Event列等于START的标记为1,其他为0,然后对这个标记列做累加(cumsum()),这样每遇到一次START,累加值就会递增,后续的"操作"行自然继承当前的累加值,完美匹配你的需求。

完整代码示例

import pandas as pd

# 示例数据
df = pd.DataFrame({'Event': ['START', '操作', 'START', '操作', '操作']})

# 生成Seq列:先标记START为1,其余为0,再累加
df['Seq'] = (df['Event'] == 'START').cumsum()

# 查看结果
print(df)

输出结果

Event  Seq
0   START    1
1    操作    1
2   START    2
3    操作    2
4    操作    2

为什么这个方法高效?

  • df['Event'] == 'START'会生成一个布尔数组,这是矢量化的比较操作,速度极快;
  • cumsum()是pandas内置的矢量化累加方法,底层由C语言实现,比你之前用的循环(比如for逐行判断赋值)效率高几十甚至上百倍,完全适配大规模DataFrame的场景。

如果之前你用的是循环遍历的方式,那确实会在数据量大的时候卡顿——Python的循环是逐行处理,而矢量化操作是批量处理整个数组,这两者的性能差距在数据量越大时越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:33:31