You need to enable JavaScript to run this app. 如何编写脚本校验数据集内同一ID对应的DoB一致性
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本校验数据集内同一ID对应的DoB一致性

同一ID关联DoB一致性校验脚本实现

核心校验逻辑

  • 遍历全量数据,以ID为键做分组聚合
  • 对每个ID下的所有DoB值做去重处理
  • 若单个ID下去重后的DoB值数量大于1,判定为数据不一致,输出指定格式的报错提示

待校验数据集示例

IDDoB
111101/01/2000
222203/04/2001
333307/22/2002
111102/01/2000
222203/04/2001

常用实现方案

1. Pandas 方案(适合结构化数据集处理)

对CSV、Excel等格式的数据集,用Pandas可以快速完成聚合校验,代码如下:

import pandas as pd

# 读取本地数据集,替换为实际的文件路径
df = pd.read_csv("your_dataset.csv", sep=r"\s+")

# 按ID分组,统计每个ID下不重复DoB的数量
id_dob_dup_count = df.groupby("ID")["DoB"].nunique()

# 提取存在DoB不一致的ID列表
error_ids = id_dob_dup_count[id_dob_dup_count > 1].index.tolist()

# 按要求输出报错提示
for id in error_ids:
    print(f"ID {id} has DoB inconsistencies. Please check")

运行效果:针对上述示例数据,脚本会仅输出ID 1111 has DoB inconsistencies. Please check,ID 2222因所有DoB值一致、ID 3333因仅单条记录,均不会触发报错,完全匹配校验要求。

2. 纯Python轻量方案(无第三方依赖)

如果不想安装额外依赖,用原生Python即可实现基础校验,适合小型文本数据集:

id_dob_storage = {}
# 跳过表头逐行读取
with open("your_dataset.txt", "r") as f:
    rows = f.readlines()[1:]
    for row in rows:
        stu_id, dob = row.strip().split()
        # 用集合自动对DoB去重
        if stu_id not in id_dob_storage:
            id_dob_storage[stu_id] = set()
        id_dob_storage[stu_id].add(dob)

# 遍历校验输出
for stu_id, dob_set in id_dob_storage.items():
    if len(dob_set) > 1:
        print(f"ID {stu_id} has DoB inconsistencies. Please check")

3. AWK快速方案(适合服务器端纯文本数据集处理)

如果在Linux服务器上处理纯文本数据集,无需配置Python环境,直接用AWK命令即可完成校验:

awk '
# 跳过表头后逐行处理
NR > 1 {
    # 嵌套数组记录每个ID对应的所有DoB,自动去重
    dob_record[$1][$2] = 1
}
END {
    # 遍历所有ID校验
    for (id in dob_record) {
        distinct_dob = 0
        for (dob in dob_record[id]) {
            distinct_dob ++
        }
        if (distinct_dob > 1) {
            print "ID " id " has DoB inconsistencies. Please check"
        }
    }
}' your_dataset.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 16:36:07