pandas - 将 pydantic 模型从 fastapi 转换为 pandas 数据框
问题描述
我正在尝试将 pydantic 模型转换为数据框,但我遇到了各种错误。
我有:
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
import pickle
import sklearn
import pandas as pd
import numpy as np
class Userdata(BaseModel):
current_res_month_dec: Optional[int] = 0
current_res_month_nov: Optional[int] = 0
async def return_recurrent_user_predictions_gb(user_data: Userdata):
empty_dataframe = pd.DataFrame([Userdata(**{
'current_res_month_dec': user_data.current_res_month_dec,
'current_res_month_nov': user_data.current_res_month_nov})], ignore_index=True)
返回此数据框(尝试在本地环境的文档中执行它时):
Response body
Download
{
"0": {
"0": [
"current_res_month_dec",
0
]
},
"1": {
"0": [
"current_res_month_nov",
0
]
}
但是如果我尝试使用这个数据框进行预测:
model_has_afternoon = pickle.load(open('./models/model_gbclf_prob_current_product_has_afternoon.pickle', 'rb'))
result_afternoon = model_has_afternoon.predict_proba(empty_dataframe)[:, 1]
我收到此错误:
ValueError: setting an array element with a sequence.
我之前尝试过构建自己的数据框,并且预测应该与数据框一起使用
解决方案
推荐阅读
- java - 将下载的文件移动到 Eclipse 中的项目
- java - 尝试通过读取文件打印二维数组时,我的输出收到 Null
- java - 为什么 java.util.Stream 的 AbstractTask 使用 LEAF_TARGET = ForkJoinPool.getCommonPoolParallelism() << 2?
- java - 如何将方法中的值存储到数组中?
- python - 如何检查两个单独数组中任意两个元素之间的最小间距?
- c# - 在抽象基类的静态方法中实例化多个派生类中的任何一个(取决于参数)
- python - 从 Python 字符串中删除字符串引号,以便在 json.dump() 之后引号不会显示在 JSON 文件中
- java - 转换列表