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

使用Pandas对比新DataFrame与ground truth DataFrame查找数据偏差的方法

最简实现方案

核心思路是先把基准真值预处理为查询字典,后续校验新DataFrame时直接按列位置取值对比,完全不依赖新表的列名。

步骤1:预处理基准真值(仅需执行一次,可用于所有新表校验)

将基准表的项目ID设为键,负责人设为值,生成哈希查询表,单次查询复杂度为O(1):

import pandas as pd

# 按列位置取基准表的ID列和负责人列,生成查询字典
gt_map = df_gt.set_index(df_gt.columns[0])[df_gt.columns[1]].to_dict()

步骤2:通用校验函数

直接按位置取新表的两列,向量化过滤错误条目,适配任意列名的双列新DataFrame:

def get_validation_errors(df_new, gt_map):
    # 按位置取ID列、负责人列,无视列名
    pid_col, leader_col = df_new.columns[0], df_new.columns[1]
    # 错误条件:ID不在基准中 / 负责人与基准不匹配
    error_filter = ~df_new[pid_col].isin(gt_map) | (df_new[leader_col] != df_new[pid_col].map(gt_map))
    # 转换为嵌套列表输出
    return df_new.loc[error_filter, [pid_col, leader_col]].values.tolist()

示例测试

errors = get_validation_errors(df_new, gt_map)
print(errors)
# 输出结果与预期一致:[[122, 'Henry Cavil'], [144, 'Natalie Portman'], [146, 'Jack Black']]

方案优势

  1. 完全适配任意列名的新表,仅要求新表两列顺序固定(第一列为项目ID,第二列为负责人,符合题目要求)
  2. 基准仅需预处理一次,可批量校验多个新DataFrame
  3. 全向量化操作,处理百万行级数据也无性能问题

内容的提问来源于stack exchange,提问作者iby.helmy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:21:01