Python Pandas中如何为重复ID的行生成自增编号列
实现代码
直接使用Pandas内置的分组累计计数功能即可完成需求,完整可运行代码如下:
import pandas as pd # 构造原始DataFrame data_1 = {'ID': ['001', '003', '001','002','002','002'], 'Name': ["XX1", "XX3", "XX1", "XX2", "XX2", "XX2"]} df = pd.DataFrame(data_1) # 生成自增Number列 df['Number'] = df.groupby('ID').cumcount() + 1 # 验证输出结果和期望一致 print(df)
原理说明
df.groupby('ID')按照ID字段分组,所有相同ID的行会被归为同一个分组cumcount()会对每个分组内的行按原始表的顺序进行计数,默认从0开始,加1之后就可以实现首次出现编号为1、后续重复依次递增的要求- 该方法不会打乱原始表的行顺序,输出结果完全匹配你给出的期望示例
如果你的业务逻辑中需要同时以ID和Name两个字段作为重复判定的依据,只需要把分组逻辑改成df.groupby(['ID', 'Name'])即可,结果不变。
内容的提问来源于stack exchange,提问作者Hummer
相关产品推荐
相关产品推荐

