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

如何在Pandera的SchemaModel中实现联合唯一性与字段级Lambda检查?

Pandera SchemaModel 实现联合唯一性检查及字段级Lambda校验

一、SchemaModel 中实现联合唯一性检查

在SchemaModel中,可通过@pa.check_dataframe()装饰器定义DataFrame级别的联合唯一性约束,用法与DataFrameSchema的unique参数一致:

import pandas as pd
import pandera as pa
from pandera.typing import DataFrame, Series

class MySchema(pa.SchemaModel):
    a: Series[int]
    b: Series[int]
    c: Series[int]

    # 指定联合唯一列,配置重复项报告规则
    @pa.check_dataframe(unique=["a", "c"], report_duplicates="exclude_first")
    def check_unique_ac(cls, df: DataFrame) -> DataFrame:
        return df

# 测试数据
df = pd.DataFrame.from_records([
    {"a": 1, "b": 2, "c": 3},
    {"a": 1, "b": 2, "c": 3},  # 该行属于a+c的重复项,会触发校验失败
])

# 执行校验
MySchema.validate(df)

二、字段级Lambda检查的Field配置方式

SchemaModel中可通过pa.Field()实现与DataFrameSchema里Column等价的字段级Lambda检查,直接在字段注解中配置:

class NullableSchema(pa.SchemaModel):
    column1: Series[float] = pa.Field(
        checks=pa.Check(lambda x: x > 0),  # 字段级Lambda校验规则
        nullable=True  # 允许字段为空值
    )

# 测试示例(假设有符合规则的数据集)
# df = pd.DataFrame({"column1": [1.5, 2.3, None, 4.1]})
# print(NullableSchema.validate(df))

以上代码分别实现了你提供的DataFrameSchema示例中的联合唯一性校验和字段级Lambda校验逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:02:25