在 Pydantic 中使用 Pandas 数据框作为类型
Using Pandas Data Frame as a Type in Pydantic
我正在使用 pydantic
并希望创建包含 pandas 数据帧的 类。
我在网上找了很长时间,但没有找到任何东西。
我的自定义类型代码如下所示。我将数据帧的类型命名为 pd.DataFrame 但是
显然这是不正确的。有谁知道如何声明 pandas 数据框类型?
import pandas as pd
from pydantic import BaseModel
class SubModelInput(BaseModel):
a: pd.DataFrame
b: pd.DataFrame
class ModelInput(BaseModel):
SubModelInput: SubModelInput
a: pd.DataFrame
b: pd.DataFrame
c: pd.DataFrame
感谢您的帮助!
如果我没理解错的话,你的意图是为 pd.Dataframe
创建一个 pythonic 类型提示。我想您可以使用以下实现:
import pandas as pd
from pydantic import BaseModel
from typing import TypeVar
PandasDataFrame = TypeVar('pandas.core.frame.DataFrame')
class SubModelInput(BaseModel):
a: PandasDataFrame
b: PandasDataFrame
class ModelInput(BaseModel):
SubModelInput: SubModelInput
a: PandasDataFrame
b: PandasDataFrame
c: PandasDataFrame
data_frame = pd.DataFrame([{"a": "foo", "b": "bar"}])
sub_model = SubModelInput(a=data_frame, b=data_frame)
model = ModelInput(a=data_frame, b=data_frame, c=data_frame, SubModelInput=sub_model)
model.dict()
# {'SubModelInput': {'a': a b
# 0 foo bar, 'b': a b
# 0 foo bar}, 'a': a b
# 0 foo bar, 'b': a b
# 0 foo bar, 'c': a b
# 0 foo bar}
您可以激活Arbitrary Types Allowed:
import pandas as pd
from pydantic import BaseModel
class SubModelInput(BaseModel):
a: pd.DataFrame
b: pd.DataFrame
class Config:
arbitrary_types_allowed = True
class ModelInput(BaseModel):
SubModelInput: SubModelInput
a: pd.DataFrame
b: pd.DataFrame
c: pd.DataFrame
class Config:
arbitrary_types_allowed = True
我正在使用 pydantic
并希望创建包含 pandas 数据帧的 类。
我在网上找了很长时间,但没有找到任何东西。
我的自定义类型代码如下所示。我将数据帧的类型命名为 pd.DataFrame 但是
显然这是不正确的。有谁知道如何声明 pandas 数据框类型?
import pandas as pd
from pydantic import BaseModel
class SubModelInput(BaseModel):
a: pd.DataFrame
b: pd.DataFrame
class ModelInput(BaseModel):
SubModelInput: SubModelInput
a: pd.DataFrame
b: pd.DataFrame
c: pd.DataFrame
感谢您的帮助!
如果我没理解错的话,你的意图是为 pd.Dataframe
创建一个 pythonic 类型提示。我想您可以使用以下实现:
import pandas as pd
from pydantic import BaseModel
from typing import TypeVar
PandasDataFrame = TypeVar('pandas.core.frame.DataFrame')
class SubModelInput(BaseModel):
a: PandasDataFrame
b: PandasDataFrame
class ModelInput(BaseModel):
SubModelInput: SubModelInput
a: PandasDataFrame
b: PandasDataFrame
c: PandasDataFrame
data_frame = pd.DataFrame([{"a": "foo", "b": "bar"}])
sub_model = SubModelInput(a=data_frame, b=data_frame)
model = ModelInput(a=data_frame, b=data_frame, c=data_frame, SubModelInput=sub_model)
model.dict()
# {'SubModelInput': {'a': a b
# 0 foo bar, 'b': a b
# 0 foo bar}, 'a': a b
# 0 foo bar, 'b': a b
# 0 foo bar, 'c': a b
# 0 foo bar}
您可以激活Arbitrary Types Allowed:
import pandas as pd
from pydantic import BaseModel
class SubModelInput(BaseModel):
a: pd.DataFrame
b: pd.DataFrame
class Config:
arbitrary_types_allowed = True
class ModelInput(BaseModel):
SubModelInput: SubModelInput
a: pd.DataFrame
b: pd.DataFrame
c: pd.DataFrame
class Config:
arbitrary_types_allowed = True