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

如何按oldID分组为Pandas DataFrame创建从1开始的newID列

解决方案

从你给出的期望结果来看,实际编号规则和描述的“按oldID分组编号”有差异——同一oldID下部分行编号相同,部分行编号递增。反推规则应为:

  • 初始编号从1开始
  • 若当前行的STATUS以Status2开头,或是Statuse,则继承上一行的编号
  • 其他情况,编号在上一行基础上加1

针对大数据量,这个方案用向量运算实现,效率极高,无需groupby或合并操作:

import pandas as pd

# 读取分号分隔的数据
df = pd.read_csv('your_file.csv', sep=';')

# 标记哪些行需要继承上一行的编号
df['need_inherit'] = df['STATUS'].str.startswith('Status2') | (df['STATUS'] == 'Statuse')

# 生成newID:对不需要继承的行做累加,得到连续编号
df['newID'] = (~df['need_inherit']).cumsum()

# 可选:删除辅助列
df = df.drop('need_inherit', axis=1)

如果你确实需要严格按唯一oldID分组分配连续编号(同一oldID下所有行编号相同),用ngroup更高效,处理百万级数据毫无压力:

import pandas as pd

df = pd.read_csv('your_file.csv', sep=';')

# 按oldID分组,生成从1开始的连续编号
df['newID'] = df.groupby('oldID').ngroup() + 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:54:51