You need to enable JavaScript to run this app. 如何在pandas DataFrame中验证PAN卡号并拆分合格/不合格数据集
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas DataFrame中验证PAN卡号并拆分合格/不合格数据集

PAN号码校验与DataFrame拆分实现

依赖导入

import pandas as pd
import re

校验函数编写

def validate_pan_number(value):
    # 处理空值、空白值场景
    if pd.isna(value) or str(value).strip() == "":
        return "PAN is not present"
    # 校验PAN格式:5位大写英文字母 + 4位数字 + 1位大写英文字母,总长度10位
    clean_pan = str(value).strip()
    if re.fullmatch(r"^[A-Z]{5}[0-9]{4}[A-Z]$", clean_pan):
        return True
    return "PAN is not present"

DataFrame拆分实现

# 构造示例DataFrame,可替换为你的实际数据
data = {
    "Name": ["x", "s", "A"],
    "PAN": ["BBDFW7894Q", "", "QWE7892E"]
}
df = pd.DataFrame(data)

# 对PAN列执行校验,生成校验结果列
df["pan_check_res"] = df["PAN"].apply(validate_pan_number)

# 拆分数据集
df_pass = df[df["pan_check_res"] == True].drop(columns="pan_check_res").reset_index(drop=True)
df_fail = df[df["pan_check_res"] != True].drop(columns="pan_check_res").reset_index(drop=True)

输出结果验证

打印df_pass即可得到校验通过的数据集:

Name         PAN
0    x  BBDFW7894Q

打印df_fail即可得到校验不通过的数据集:

Name       PAN
0    s          
1    A  QWE7892E

原函数问题说明

你之前写的函数存在以下问题:

  • 缺少空值、空白值的判断逻辑,无法处理PAN为空的场景
  • re.match仅匹配字符串开头,无法保证全串符合格式要求,需替换为re.fullmatch
  • re.match调用时没有传入待匹配的目标值参数
  • 不需要遍历列,函数作用对象是单个PAN值,无需循环逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 10:24:03