我有一个包含“Period”列的数据框,其数据类型应为 pandas.Period。
我想使用 Pandera Schema(DataFrameModel 或 DataFrameSchema)来验证这一点。
到目前为止我的尝试返回错误。
如果我尝试下面的代码,则会收到错误
Data type '<class 'pandas._libs.tslibs.period.Period'>' not understood by Engine.
代码:
import pandas as pd
import pandera as pa
from pandera.typing import Series
class Schema(pa.DataFrameModel):
period: Series[pd.Period]
df = pd.DataFrame({"period" : pd.period_range("31/01/2024", "31/12/2024", freq='M')})
Schema.validate(df)
非常感谢任何建议!
你能检查一下这个解决方案吗
import pandas as pd
import pandera as pa
from pandera import Column, Check
def is_period(series): return series.apply(lambda x: isinstance(x, pd.Period)).all()
schema = pa.DataFrameSchema({ "period": Column(object, checks=Check(is_period)), })
df = pd.DataFrame({"period": pd.period_range("31/01/2024", "31/12/2024", freq='M')})
schema.validate(df)