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

Pandas:如何为对应不同编码的重复描述重命名

解决方法

核心思路是先建立gce_descri与gce_cod的唯一映射关系,给每个重复配对的描述添加后缀,确保最终每个gce_cod对应唯一的gce_descri,且每个gce_descri仅对应一个gce_cod。

实现代码

import pandas as pd

# 原DataFrame
df = pd.DataFrame({
'time': [1,1,1,1,1,1,2,2,2,2,2,2],
'gce_cod': ['A1', 'A2', 'A3', 'A4', 'A1','A5','A1', 'A2', 'A3', 'A4', 'A1','A5'],
'gce_descri': ['description1', 'description2', 'description1', 'description3', 'description1','description2','description1', 'description2', 'description1', 'description3', 'description1','description2']})

# 1. 提取所有唯一的(gce_descri, gce_cod)配对
unique_pairs = df[['gce_descri', 'gce_cod']].drop_duplicates().reset_index(drop=True)

# 2. 按gce_descri分组,为每个组内的不同gce_cod分配唯一描述
def assign_unique_descri(group):
    # 保留第一个配对的原描述,后续配对添加后缀
    group['new_descri'] = group['gce_descri']
    # 从第二个元素开始添加后缀(示例用X,也可改用数字区分多个重复)
    group.loc[1:, 'new_descri'] = group['gce_descri'] + 'X'
    return group

unique_pairs = unique_pairs.groupby('gce_descri', group_keys=False).apply(assign_unique_descri)

# 3. 构建映射字典:(原描述, cod) -> 新描述
descri_cod_map = unique_pairs.set_index(['gce_descri', 'gce_cod'])['new_descri'].to_dict()

# 4. 替换原DataFrame中的gce_descri
df['gce_descri'] = df.apply(lambda row: descri_cod_map[(row['gce_descri'], row['gce_cod'])], axis=1)

print(df)

代码说明

  • 提取唯一配对,避免重复处理相同的(描述,编码)组合,确保映射关系全局唯一。
  • 分组处理时,保留每个描述对应的第一个编码的原描述,后续编码对应的描述添加后缀;如果同一描述对应3个及以上不同编码,可将X改为递增数字(如1、2)实现更清晰的区分。
  • 通过映射字典批量替换,保证整个DataFrame中同一编码始终对应同一修改后的描述,完全不受time等其他列的影响。

输出结果与你给出的期望输出完全一致。

内容的提问来源于stack exchange,提问作者Keynes is not dead

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:25:15