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

如何为pandas DataFrame中连续重复的Chronological列值分配唯一ID

解决方案

直接使用pandas内置的向量化操作实现,仅需一行核心代码即可完成,执行效率远高于手动for循环遍历:

# 核心逻辑
dfA['unique_id'] = ((dfA['Chronological'] != dfA['Chronological'].shift(1)) | (dfA['Chronological'] == 0)).cumsum()

逻辑说明

  • dfA['Chronological'].shift(1) 是把Chronological列整体向下偏移一行,用来和当前行的取值做对比
  • 触发unique_id自增的条件有两个,满足任意一个就会生成新的id:
    • 当前行的Chronological取值和上一行不同
    • 当前行的Chronological取值为0(即使和上一行取值相同也会生成新id)
  • 最后用cumsum()对布尔序列累加,自动生成连续的唯一id

注意事项

执行代码前请确保你的DataFrame已经按ID顺序排序,如果未排序可以先执行以下代码预处理:

dfA = dfA.sort_values('ID', ignore_index=True)

性能优势

这个方案是纯向量化操作,没有显式的Python层循环,所有计算都在pandas底层的优化逻辑中执行,时间复杂度为O(n),哪怕处理百万级行的数据也能在毫秒级完成,比你之前的遍历+切片+拼接的方案效率高几十到上百倍。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:36:03