如何对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
相关产品推荐
相关产品推荐

