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

如何对Pandas Series中的重复值重命名,添加_2/_3等序列后缀

重复值按序列加后缀的实现方案

实现思路

  • 用字典统计每个重复值的出现频次,保证相同值的后缀按出现顺序递增
  • 后缀从2开始计数,匹配要求的输出规则
  • 处理完成后可直接替换回原Series的对应位置

完整代码实现

首先导入需要的工具类,然后修改你的rename_duplicates方法:

from collections import defaultdict

def rename_duplicates(self, data=None, key=None):
    # 获取重复值(建议调整find_duplicates同时返回重复值对应的行索引,方便后续替换)
    duplicates = self.find_duplicates(data, key)
    # 初始化计数容器
    count_map = defaultdict(int)
    renamed_list = []

    for item in duplicates:
        count_map[item] += 1
        # 按规则拼接后缀
        renamed_item = f"{item}_{count_map[item] + 1}"
        renamed_list.append(renamed_item)
    
    # 如果你需要把处理后的值替换回原Series,可参考以下逻辑(前提是find_duplicates返回对应行索引):
    # dup_indexes, _ = self.find_duplicates(data, key)
    # for idx, new_val in zip(dup_indexes, renamed_list):
    #     data.loc[idx, key] = new_val

    return data, renamed_list

效果验证

输入你给出的重复值列表:
["apple", "apple", "apple", "banana", "banana", "orange", "orange"]
运行后得到的renamed_list结果完全匹配预期:
["apple_2", "apple_3", "apple_4", "banana_2", "banana_3", "orange_2", "orange_3"]

注意事项

如果你的find_duplicates当前仅返回值列表,建议调整为返回「重复值行索引列表 + 重复值列表」的结构,避免后续替换时因为值重复导致定位错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 21:06:04