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

如何使用Pandera Schema验证pandas.Period类型的DataFrame列?

解决Pandera验证pandas.Period类型报错的方案

报错原因是Pandera默认引擎无法直接识别pd.Period原生类型,下面提供两种可行的解决方法:

方法一:自定义Check验证元素类型

通过pa.Check函数检查列中每个元素是否为pd.Period实例,还可以额外验证周期频率是否符合要求:

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

class Schema(pa.DataFrameModel):
    # 基础验证:确保所有元素都是pd.Period类型
    period: Series[object] = pa.Check(lambda x: all(isinstance(i, pd.Period) for i in x))
    # 进阶验证:同时确保频率为月频(根据需求调整)
    # period: Series[object] = pa.Check(lambda x: all(isinstance(i, pd.Period) for i in x)) & pa.Check(lambda x: all(i.freq == 'M' for i in x))

df = pd.DataFrame({"period" : pd.period_range("31/01/2024", "31/12/2024", freq='M')})
Schema.validate(df)

方法二:使用Pandera内置Period dtype(推荐)

Pandera提供了专门的Period dtype,支持直接指定类型和频率,更简洁规范:

import pandas as pd
import pandera as pa
from pandera.typing import Series
from pandera.dtypes import Period

class Schema(pa.DataFrameModel):
    # 直接指定为Period类型,且限定频率为月频
    period: Series[Period(freq='M')]

df = pd.DataFrame({"period" : pd.period_range("31/01/2024", "31/12/2024", freq='M')})
Schema.validate(df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:42:14