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

不同形状Pandas DataFrame的多值比对与异常标记实现方案

Pandas 实现数据校验方案

核心实现逻辑

我们可以先将基准真值表转换为查询映射,再逐行校验待校验数据集的取值是否符合基准要求,具体实现代码如下:

完整代码示例

import pandas as pd

# 样例数据构造
data_df = pd.DataFrame(
    {"Reference": ("A", "A", "A", "B", "C", "C", "D", "E"), 
     "Other col": ("U", "U", "U--","V", "W", "W--", "X", "Y")}, 
    index=[1, 2, 3, 4, 5, 6, 7, 8]
)
truth_df = pd.DataFrame(
    {"Reference": ("A", "B", "C", "D", "E"), 
     "Other col": ("U", "V", "W", "X", "Y")}, 
    index=[1, 4, 5, 7, 8]
)

# 步骤1:构建Reference到基准值的映射字典
truth_map = truth_df.set_index("Reference")["Other col"]

# 步骤2:逐行校验取值,新增Issues标记列
data_df["Issues"] = data_df.apply(
    lambda row: "Wrong" if row["Other col"] != truth_map[row["Reference"]] else "",
    axis=1
)

# 可选:如果需要和示例result_df完全一致,过滤掉Reference为E的行(E取值完全匹配示例未展示)
result_df = data_df[data_df["Reference"] != "E"].copy()

逻辑说明

  1. 先将truth_df转换为以Reference为索引的Series,作为基准查询映射,查询效率远高于逐行匹配
  2. 遍历data_df每一行,将当前行的取值和对应Reference的基准值对比,不匹配则标记为Wrong,匹配则留空
  3. 若你实际场景中的值列名不是Other col,替换为实际列名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 02:12:07