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

如何使用Pandera校验Pandas DataFrame并过滤保留全部有效行

Pandera 保留校验通过有效行的实现方案

你可以通过Pandera的懒校验模式收集所有错误行索引,再过滤得到有效数据,完整可运行代码如下:

import pandera as pa
import pandas as pd
import numpy as np

# 预设Schema规则
schema: pa.DataFrameSchema = pa.DataFrameSchema(columns={
  'Col1': pa.Column(str),
  'Col2': pa.Column(float, checks=pa.Check(lambda x: (0 <= x <= 1)), nullable=True),
})

# 待校验测试数据
df: pd.DataFrame = pd.DataFrame({
    "Col1": ["1", "2", "3", np.nan],
    "Col2": [0.3, 0.4, 5, 0.2],
})

# 核心校验过滤逻辑
try:
    schema.validate(df, lazy=True)
    # 若无任何校验错误,直接用原df即可
    valid_df = df
except pa.errors.SchemaErrors as e:
    # 提取所有校验失败的行索引并去重
    invalid_indexes = e.failure_cases["index"].unique()
    # 剔除错误行保留有效行
    valid_df = df.drop(invalid_indexes)

print(valid_df)

运行后输出结果和你预期完全一致:

Col1  Col2
0    1   0.3
1    2   0.4

逻辑说明

  • 开启lazy=True参数后,Pandera不会在校验到第一个错误时就中断,而是会收集全量校验错误后再抛出SchemaErrors异常
  • 从异常的failure_cases属性中可以拿到所有校验失败的行索引,去重后删除这些行即可得到全部符合规则的有效数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:06:06