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

如何用Pandera校验含float或int类型的Pandas列?

Pandera 支持float/int混合类型列的Schema配置方法

Pandera的SchemaModel不直接识别Python原生的Union[float, int]或float | int作为Series的泛型参数,你可以通过以下两种方式实现需求:

方案一:使用Pandera内置数据类型联合

直接用Pandera提供的pa.Float和pa.Int类型进行联合,这是最贴合Pandera类型系统的方式:

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

class IngestSchema(pa.SchemaModel):
    column_header: Series[pa.Float | pa.Int] = pa.Field(alias='MY HEADER')

# 验证测试
df_int = pd.DataFrame({'MY HEADER': [1, 2, 3]})
IngestSchema.validate(df_int)  # 成功通过

df_float = pd.DataFrame({'MY HEADER': [1.2, 3.0, 5.7]})
IngestSchema.validate(df_float)  # 成功通过

方案二:自定义校验规则

如果需要更灵活的类型检查逻辑,可以通过pa.Check函数自定义校验器:

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

# 自定义类型检查函数
def check_float_or_int(value):
    return isinstance(value, (int, float))

class IngestSchema(pa.SchemaModel):
    column_header: Series[object] = pa.Field(
        alias='MY HEADER',
        check=pa.Check(check_float_or_int)
    )

# 验证测试
df_int = pd.DataFrame({'MY HEADER': [1, 2, 3]})
IngestSchema.validate(df_int)

df_float = pd.DataFrame({'MY HEADER': [1.2, 3.0, 5.7]})
IngestSchema.validate(df_float)

补充说明

如果你的数据包含空值,可对应使用Pandera的Nullable类型(如pa.Int64、pa.Float64),适配pandas的Int64/Float64 dtype。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:13:19