如何基于Pandera DataFrameModel创建空Pandas DataFrame?
基于Pandera DataFrameModel创建空Pandas DataFrame
可以基于Pandera的DataFrameModel创建结构匹配的空Pandas DataFrame,以下是具体实现方式:
原问题代码示例
给定的Pandera DataFrameModel定义及期望的空DataFrame:
import pandera as pa from pandera.typing import Series import pandas as pd class MySchema(pa.DataFrameModel): state: Series[str] city: Series[str] price: Series[int] def get_empty_df_of_schema(schema: pa.DataFrameModel) -> pd.DataFrame: pass # 期望得到的空DataFrame结构 wanted_result = pd.DataFrame( columns=['state', 'city', 'price'] ).astype({'state': str, 'city': str, 'price': int}) wanted_result.info()
期望输出的DataFrame结构:
Index: 0 entries Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 state 0 non-null object 1 city 0 non-null object 2 price 0 non-null int64
可行解决方案
通过将DataFrameModel转换为Schema对象,提取列名与对应数据类型,即可生成匹配的空DataFrame:
from pandera import DataFrameModel, MetaModel import pandas as pd def get_empty_df_of_pandera_model(model: type[DataFrameModel | MetaModel]) -> pd.DataFrame: schema = model.to_schema() column_names = list(schema.columns.keys()) # 提取各列对应的数据类型名称 data_types = {col: dtype.dtype.type.name for col, dtype in schema.columns.items()} return pd.DataFrame(columns=column_names).astype(data_types)
代码说明
- 调用
model.to_schema()将DataFrameModel转换为Schema实例,获取完整的列定义信息 - 从Schema中提取所有列名,以及每一列对应的数据类型
- 创建空DataFrame并通过
astype()方法设置正确的数据类型,与Schema完全匹配
内容的提问来源于stack exchange,提问作者MJA
相关产品推荐
相关产品推荐

