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

如何在pandas DataFrame中插入按分组顺序编号的SEQUENCE子ID列

问题原因

你原有代码无法运行、逻辑不符合预期的原因有两点:

  • 多列选择语法错误:pandas 选取多列时必须传入列名列表,df['ID', 'TYPE']属于非法写法,正确写法为df[['ID', 'TYPE']]
  • 方法选择错误:cumsum()用于做累加计算,无法生成组内顺序编号,且没有处理seq前缀的拼接逻辑。
正确实现方案

使用pandas内置的groupby().cumcount()方法即可实现需求,该方法会按行的原始出现顺序,为每个分组内的行生成从0开始的连续整数编号,和你需要的编号规则完全匹配,完整代码如下:

# 生成带seq前缀的顺序子ID列
df['SEQUENCE'] = 'seq' + df.groupby(['ID', 'TYPE']).cumcount().astype(str)

# 调整列顺序,和给出的示例列顺序完全对齐
df = df[['ID', 'TYPE', 'SEQUENCE', 'ESC', 'END']]
运行结果

执行代码后得到的DataFrame和预期效果完全一致:

ID TYPE SEQUENCE       ESC  END
0  TRL  EC1     seq0  MISL1123   36
1  TRL  EC2     seq1  XISL1124   57
2  LBL  EC1     seq0    CARB24   20
3  LBL  EC1     seq1    AARB70   96
4  LBL  EC2     seq2     MUT23   79

补充说明:cumcount()默认按行在原表中的先后顺序计数,如果你需要先按某字段排序再生成编号,在分组前先执行df = df.sort_values(by='指定排序字段')即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:06:25