我似乎找不到任何简单地将 Pydantic BaseModel 列表转换为 Pandas Dataframe 的内置方法。
from pydantic import BaseModel
import pandas as pd
class SomeModel(BaseModel):
col1: str
col2: str
data = [SomeModel(**{'col1': 'foo', 'col2': 'bar'})] * 10
pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)
输出
>> 0 1
>> 0 (col1, foo) (col2, bar)
>> 1 (col1, foo) (col2, bar)
>> ...
Run Code Online (Sandbox Code Playgroud)
通过这种方式,列被加载为数据。解决方法是执行以下操作
pd.Dataframe([model.dict() for model in data])
Run Code Online (Sandbox Code Playgroud)
输出
>> col1 col2
>> 0 foo bar
>> 1 foo bar
>> ...
Run Code Online (Sandbox Code Playgroud)
然而,这种方法对于大量数据来说有点慢。有没有更快的方法?