gpt4 book ai didi

python - 从 json 创建的 Pandas 数据框具有未命名列 - 由于未命名列问题无法插入 MySQL

转载 作者:可可西里 更新时间:2023-11-01 08:24:37 25 4
gpt4 key购买 nike

现在我正在处理一些 JSON 数据,我正试图将它动态地推送到 MySQL 数据库中。 JSON 文件很大,所以我必须使用 Python 中的 yield 函数逐行仔细检查它,将每一行 JSON 转换成小的 pandas DF 并将其写入 MySQL。问题是,当我从 JSON 创建 DF 时,它会添加索引列。似乎当我向 MySQL 写入内容时,它会忽略 index=False 选项。代码如下

import gzip
import pandas as pd
from sqlalchemy import create_engine

#stuff to parse json file
def parseJSON(path):
g = open(path, 'r')
for l in g:
yield eval(l)
#MySQL engine
engine = create_engine('mysql://login:password@localhost:1234/MyDB', echo=False)
#empty df just to have it
df = {}

for l in parseJSON("MyFile.json"):
df = pd.DataFrame.from_dict(l, orient='index')
df.to_sql(name='MyTable', con=engine, if_exists = 'append', index=False)

我得到一个错误:

OperationalError: (_mysql_exceptions.OperationalError) (1054, "Unknown column '0' in 'field list'")

知道我遗漏了什么吗?还是有办法解决这个问题?

更新。每次我在内部循环中创建数据框时,我都会看到数据框有一个值为 0 的未命名列。

这里有一些关于 DF 的信息:

df
Out[155]:
0
reviewerID A1C2VKKDCP5H97
asin 0007327064
reviewerName Donna Polston
helpful [0, 0]
unixReviewTime 1392768000
reviewText love Oddie ,One of my favorite books are the O...
overall 5
reviewTime 02 19, 2014
summary Wow

print(df.columns)
RangeIndex(start=0, stop=1, step=1)

最佳答案

您当前有一个框架,其中一列名为 0,您的预期列名称作为框架的索引。或许你可以试试

df = pd.DataFrame.from_dict(l)

注意:我认为如果您可以构建一个 dict(或其他一些结构),将所有行转换为 df,然后推送到 mysql,您的性能会好得多。一次一行可能太慢了

关于python - 从 json 创建的 Pandas 数据框具有未命名列 - 由于未命名列问题无法插入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43462764/

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