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

如何高效修正Pandas DataFrame的Unique_ID并验证修改结果?

Pandas DataFrame重复ID批量修正与验证方案

一、高效替换Unique_ID的实现

实现步骤

  1. 构建ID映射字典
    从修正表df_corrected_ID中提取新旧ID的对应关系,转成字典(Pandas批量替换的最优格式):

    id_mapping = df_corrected_ID.set_index('Unique_ID_old')['Unique_ID_new'].to_dict()
    
  2. 新增修正列并批量替换
    用map方法匹配映射,对不在映射表中的ID(无需修正)直接保留原值,全程不改变原数据顺序与记录数:

    # 新增Unique_ID_fixed列存储修正后的ID,保留原Unique_ID列用于回溯
    df['Unique_ID_fixed'] = df['Unique_ID'].map(id_mapping).fillna(df['Unique_ID'])
    

优势说明

  • 时间复杂度O(n),9000条数据毫秒级完成;
  • 原列完整保留,避免数据覆盖风险;
  • 严格维持原记录顺序与总数,保证数据完整性。

二、修改正确性的验证方案

1. 集合对比验证

通过集合运算快速校验整体替换逻辑:

  • 检查待修正旧ID是否完全清除:修正后的列中不应存在任何待修正的旧ID

    old_ids_to_fix = set(df_corrected_ID['Unique_ID_old'])
    fixed_ids = set(df['Unique_ID_fixed'])
    # 交集为空则说明旧ID已全部替换
    assert old_ids_to_fix & fixed_ids == set(), "存在未被替换的旧ID"
    
  • 检查修正后ID范围是否合规:修正后的ID应是「原无需修正的ID」与「映射表新ID」的并集

    original_valid_ids = set(df['Unique_ID']) - old_ids_to_fix
    new_ids_from_map = set(df_corrected_ID['Unique_ID_new'])
    assert fixed_ids == original_valid_ids | new_ids_from_map, "修正后ID包含异常值"
    

2. 数量匹配验证

统计替换前后的关键数据量,确保无遗漏或错误:

# 原数据中需要修正的记录数
original_fix_count = df['Unique_ID'].isin(old_ids_to_fix).sum()
# 修正后使用新ID的记录数
fixed_new_count = df['Unique_ID_fixed'].isin(new_ids_from_map).sum()
# 两者数量必须相等
assert original_fix_count == fixed_new_count, "替换数量不匹配,存在遗漏"

3. 抽样细节验证

随机抽取待修正ID,检查单条记录的替换结果:

# 随机选取3个待修正的旧ID
sample_old_ids = df_corrected_ID['Unique_ID_old'].sample(3).tolist()
for old_id in sample_old_ids:
    target_new_id = df_corrected_ID.loc[df_corrected_ID['Unique_ID_old'] == old_id, 'Unique_ID_new'].iloc[0]
    # 验证该旧ID对应的所有记录都替换为目标新ID
    assert df.loc[df['Unique_ID'] == old_id, 'Unique_ID_fixed'].nunique() == 1, f"ID {old_id} 替换结果不唯一"
    assert df.loc[df['Unique_ID'] == old_id, 'Unique_ID_fixed'].iloc[0] == target_new_id, f"ID {old_id} 替换错误"

4. 完整性验证

确保处理前后记录数完全一致,无数据丢失:

original_length = len(df)
# 执行替换操作后...
assert len(df) == original_length, "记录数变化,数据完整性受损"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:25:33