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

使用Python为DataFrame的PAN列添加校验状态与无效标识列的方法

解决方案

你原有代码的核心问题有两个:

  1. 不要在逐行处理的自定义函数内直接修改全局DataFrame的列,会导致赋值逻辑混乱
  2. 函数返回值格式不统一,需要所有分支都返回**(Invalid值, PAN_Status值)**格式的元组,后续才能直接拆分出两列

另外要注意判断顺序:先判断是否为NaN,再调用字符串的strip()方法,否则NaN调用strip()会抛出类型错误。


完整实现代码

首先导入依赖库:

import pandas as pd
import re

修改后的验证函数:

def panValidation(ele):
    # 先判断是否为空/NaN
    if pd.isna(ele) or (isinstance(ele, str) and ele.strip() == ''):
        return (True, "PAN is not present")
    # 匹配PAN格式规则
    elif re.match(r'^[A-Z]{5}[0-9]{4}[A-Z]$', ele.strip()):
        return (False, "Valid PAN Number")
    # 格式不匹配
    else:
        return (False, "Not Valid PAN")

应用函数到DataFrame的PAN列,拆分生成两列:

# 此处替换为你自己的原始DataFrame即可
df = pd.DataFrame({
    'PAN': ['ACBDV8521N', '', None, 'AWVFEF']
})

# apply返回的结果会自动把元组拆成两列,分别赋值给Invalid和PAN_Status
df[['Invalid', 'PAN_Status']] = df['PAN'].apply(panValidation).tolist()

处理后的输出结果和你要求的格式完全一致:

PANInvalidPAN_Status
ACBDV8521NFalseValid PAN Number
TruePAN is not present
NaNTruePAN is not present
AWVFEFFalseNot Valid 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 13:54:04