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

如何在Pandas DataFrame中为重复标识字符串添加递增序号后缀

问题

我需要修改Pandas DataFrame中的Identifier列,原始数据如下:

Name.                Age                     Identifier
Peter Pan            13                      PanPe
James Jones          24                      JonesJa
Peter Pan            22                      PanPe
Chris Smith          19                      SmithCh

期望修改后得到:

Identifier
PanPe01
JonesJa01
PanPe02
SmithCh01

要求为首次出现的标识字符串添加01后缀,重复项依次添加02、03等递增序号。我已经了解基础逻辑代码:

combo="PanPe"
Counts={}
if combo in counts:
   count=counts[combo]
   counts[combo]=count+1
else:
   counts[combo]=1

作为Python新手,需要完整代码示例实现整列遍历处理。

解决方案

方法一:利用Pandas内置方法(高效简洁)

你可以用Pandas的groupby和cumcount方法快速实现,这比手动遍历性能更好,代码更简洁:

import pandas as pd

# 构造原始DataFrame
data = {
    'Name.': ['Peter Pan', 'James Jones', 'Peter Pan', 'Chris Smith'],
    'Age': [13, 24, 22, 19],
    'Identifier': ['PanPe', 'JonesJa', 'PanPe', 'SmithCh']
}
df = pd.DataFrame(data)

# 生成带序号的新Identifier列
df['Identifier'] = df['Identifier'] + df.groupby('Identifier').cumcount().add(1).astype(str).str.zfill(2)

# 查看结果
print(df['Identifier'])

代码说明:

  • groupby('Identifier'):按标识字符串分组
  • cumcount():对每组内的行从0开始计数
  • add(1):把计数转为从1起始(对应01、02的序号)
  • str.zfill(2):把数字格式化为两位字符串,不足补0
  • 最后将原标识和格式化后的序号拼接

运行后输出:

0    PanPe01
1    JonesJa01
2    PanPe02
3    SmithCh01
Name: Identifier, dtype: object

方法二:基于你的基础逻辑实现手动遍历

如果想更直观理解遍历过程,可以用你提供的字典计数逻辑扩展:

import pandas as pd

# 构造原始DataFrame
data = {
    'Name.': ['Peter Pan', 'James Jones', 'Peter Pan', 'Chris Smith'],
    'Age': [13, 24, 22, 19],
    'Identifier': ['PanPe', 'JonesJa', 'PanPe', 'SmithCh']
}
df = pd.DataFrame(data)

counts = {}
new_identifiers = []

# 遍历每一行的Identifier值
for combo in df['Identifier']:
    if combo in counts:
        counts[combo] += 1
    else:
        counts[combo] = 1
    # 拼接序号并格式化为两位
    new_id = f"{combo}{str(counts[combo]).zfill(2)}"
    new_identifiers.append(new_id)

# 更新DataFrame列
df['Identifier'] = new_identifiers
print(df['Identifier'])

这个版本完全沿用你熟悉的字典计数逻辑,逐行处理并生成新标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:45:23