Pandas 类型错误:序列项 0:预期的 str 实例,使用 to_sql 时找到字典



我正在尝试将数据帧导出到 mysql 数据库中。我通过订单和库存 API 调用获取数据。

我已经成功地将订单和库存 API 调用保存到数据帧中,并将订单数据帧导出到 MySQL 表中。

但是,清单数据框向我抛出了错误:

TypeError: sequence item 0: expected str instance, dict found
我不确定我做

错了什么,我确实怀疑清单的数据帧在许多列中包含大量嵌套的 json,但不确定该怎么做。

这是我到目前为止的库存代码:

import pandas as pd
#python libary to compare today date for birthday lists.
import numpy as np
import datetime as dt
import datetime
from pandas.io.json import json_normalize
from pandas.io import sql
import pymysql.cursors
import json
import pymysql
import pandas.io.sql
from sqlalchemy import create_engine
headers_inventory = {
    'Accept': '',
    'Content-Type': '',
    'x-api-key': '',
    'x-organization-id': '',
    'x-facility-id': '',
    'x-user-id': '',
}
r_inventory = requests.get(' URL', headers=headers_inventory, verify=False)
data = json.loads(r_inventory.text)
df_inventory = json_normalize(data)
print (df_inventory)
engine = create_engine('mysql+pymysql://USERNAME:PWD@HOST:3306/DB')
df_inventory.to_sql("inventory", engine, if_exists="replace", index = False)

以下是数据帧 dtype 的内容:

int64 
object
float64

在运行具有会计年度的数据透视表时遇到类似的问题。 问题如上所述,Python 3 似乎无法将这些数字识别为一个类别。 您必须将该系列转换为字符串(即将 2007、2008 更改为 2017 财年、2018 财年(。 或者,只需将一列更改为字符串,而不是整个 df ( df.column.astype(str( (。

使用以下

行将整个 df 转换为字符串有助于:

df = df.applymap(str)

相关内容

最新更新