如何基于Pandas DataFrame中某列重复值生成带递增序号的新列?
解决方案:为重复ID生成带递增序号的新列
刚好之前处理过类似需求,用Pandas几行代码就能搞定!先还原你的示例数据:
import pandas as pd # 构造你给出的DataFrame df = pd.DataFrame({'id': ['abc', 'def', 'ghi', 'abc', 'abc', 'xyz', 'def']})
接下来用groupby + cumcount的组合实现你的需求:
# 分组后计算组内累计序号,加1让序号从1开始,再和原ID拼接 df['id1'] = df['id'] + (df.groupby('id').cumcount() + 1).astype(str)
运行后得到的结果完全符合你的期望:
id id1 0 abc abc1 1 def def1 2 ghi ghi1 3 abc abc2 4 abc abc3 5 xyz xyz1 6 def def2
简单解释下原理:
df.groupby('id'):把DataFrame按id列的值分组,所有相同ID的行会被归为一组cumcount():为每个组内的行分配从0开始的连续整数(比如第一个abc是0,第二个是1,第三个是2)- 加1之后就变成了从1开始的序号,转成字符串后和原
id值拼接,就得到了带序号的id1列
内容的提问来源于stack exchange,提问作者Deepak ..G
相关产品推荐
相关产品推荐

