gpt4 book ai didi

python - 如何将 Pydantic BaseModel 列表转换为 Pandas Dataframe

转载 作者:行者123 更新时间:2023-12-04 11:09:23 47 4
gpt4 key购买 nike

我似乎找不到任何简单地将 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)

输出
>>         0            1
>> 0 (col1, foo) (col2, bar)
>> 1 (col1, foo) (col2, bar)
>> ...

通过这种方式,列被加载为数据。解决方法是执行以下操作
pd.Dataframe([model.dict() for model in data])

输出
>>    col1 col2
>> 0 foo bar
>> 1 foo bar
>> ...

然而,这种方法对于大量数据来说有点慢。有没有更快的方法?

最佳答案

快速而肮脏的分析产生以下值:

from pydantic import BaseModel
import pandas as pd
from fastapi.encoders import jsonable_encoder
class SomeModel(BaseModel):
col1: int
col2: str

data = [SomeModel(col1=1,col2="foo"),SomeModel(col1=2,col2="bar")]*4*10**5

import cProfile

cProfile.run( 'pd.DataFrame([s.dict() for s in data])' ) # around 8.2s
cProfile.run( 'pd.DataFrame(jsonable_encoder(data))' ) # around 30.8s
cProfile.run( 'pd.DataFrame([s.__dict__ for s in data])' ) # around 1.7s
cProfile.run( 'pd.DataFrame([dict(s) for s in data])' ) # around 3s

关于python - 如何将 Pydantic BaseModel 列表转换为 Pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61814887/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com