如何将大型JSON文件加载到Pandas数据帧中



我有16个JSON文件,每个文件的大小约为14GB。我尝试了以下方法来逐行阅读它们。

with open(file_name, encoding="UTF-8") as json_file:
cursor = 0
for line_number, line in enumerate(json_file):
print ("Processing line", line_number + 1,"at cursor index:", cursor)
line_as_file = io.StringIO(line)
# Use a new parser for each line
json_parser = ijson.parse(line_as_file)
for prefix, type, value in json_parser:
#print ("prefix=",prefix, "type=",type, "value=",value,ignore_index=True)
dfObj = dfObj.append({"prefix":prefix,"type":type,"value":value},ignore_index=True)
cursor += len(line)

我的目标是将它们加载到pandas数据帧中,以执行一些搜索操作。

问题是,这种方法需要花费大量时间来读取文件。

有没有其他最佳方法可以实现这一点?

您只能将json_file直接传递给ijson.parse一次,而不是从中读取单独的行。如果您的文件具有多个顶级JSON值,则可以使用multiple_value=True选项(请参阅此处了解描述(。

还要确保您使用的是最新的ijson,并且yajl2_c后端是正在使用的后端(在ijson 3中,您可以通过查看ijson.backend来查看选择了哪个后端(。有关后端的信息,请查看此处。

您可以使用Pandas内置函数
Pandas.read_json((
文档在这里

相关内容

最新更新