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

如何在Dataframe指定行列插入校验错误信息并合并导出

实现方案

核心逻辑如下:

  1. 初始化与原始数据索引完全对齐的错误存储DataFrame,错误信息列初始为空字符串
  2. 每完成一个字段的校验,就向不符合规则的对应行追加错误信息(而非直接覆盖),多个错误用分隔符分隔
  3. 最后可按需过滤掉无错误的行,导出为CSV

完整代码示例

import pandas as pd

# 1. 读入/构造原始数据,你可以替换为自己的pd.read_xxx逻辑
data = {
    "Date": ["01-12-2021", "01-12-2021", "01-10-2021", "01-15-2021", "01-16-2021"],
    "Clearing Member PAN": ["AAACM6094BBB", "AAACM6094R", "AAACM6094R", "AAACM6094RBBB", "AAACM6094R"],
    "Trading Member PAN": ["AAACM6094R", "AAACM6094R", "AAACM6094R", "AAACM6094R", "AAACM6094R"],
    "CPCode": [124, 123, 123, 123, 123],
    "CPPAN": ["GMAPS5536A", "GMAPS5536A", "GMAPS5536A", "GMAPS5536A", "GMAPS5536A"]
}
df = pd.DataFrame(data)

# 2. 初始化错误表,和原数据索引完全对齐
error_df = pd.DataFrame(index=df.index)
error_df["error_msg"] = ""

# 3. 定义校验规则
PANValidation = r"^[A-Za-z]{5}[0-9]{4}[A-Za-z]{1}$" # 加$匹配结尾避免多余后缀字符
DateFormatValidation = r"^(0[1-9]|[12][0-9]|3[01])[-](0[1-9]|1[012])[-]\d{4}$"

# 4. 逐字段校验,追加错误信息
# 校验Date列
invalid_date_mask = ~df["Date"].str.match(DateFormatValidation)
error_df.loc[invalid_date_mask, "error_msg"] += "Date Format incorrect; "

# 校验Clearing Member PAN列
invalid_pan_mask = ~df["Clearing Member PAN"].str.match(PANValidation)
error_df.loc[invalid_pan_mask, "error_msg"] += "Invalid Pan; "

# 5. 收尾处理
# 去除末尾多余的分号和空格
error_df["error_msg"] = error_df["error_msg"].str.rstrip("; ")
# 可选:过滤掉没有错误的行
error_df = error_df[error_df["error_msg"] != ""]

# 6. 导出CSV
error_df.to_csv("validation_errors.csv", encoding="utf-8-sig")

问题说明

之前使用at方法未得到预期结果,大概率是因为直接赋值导致同一行多个校验规则的错误互相覆盖,只能保留最后一个校验的错误信息,使用+=追加的方式可以解决该问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:27:04