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

如何基于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)

代码说明

  1. 调用model.to_schema()将DataFrameModel转换为Schema实例,获取完整的列定义信息
  2. 从Schema中提取所有列名,以及每一列对应的数据类型
  3. 创建空DataFrame并通过astype()方法设置正确的数据类型,与Schema完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:57:16