我正在尝试将一些大的JSON文件加载到数据帧中。我已经能够加载多达450 MB的文件,包含约220万条记录。我得到的最大文件约为800 MB。当我尝试加载最大的文件时,它使我的容器崩溃(退出代码为137)。
我尝试了以下两种方法:
import json
import pandas as pd
def load_json(jpath):
data = [json.loads(line) for line in open(jpath, 'r')]
print('JSON file has been loaded in memory')
print()
# df = pd.DataFrame(columns=['col1', 'col2', 'col3'])
df2 = pd.DataFrame.from_records(data=data, columns=['col1', 'col2', 'col3'])
print('JSON has been loaded in Dataframe')
return df2
和
def load_json2(jpath):
data_iterator = pd.read_json(jpath, chunksize=100000, lines=True)
chunk_list = []
for data_chunk in data_iterator:
filtered_chunk = data_chunk.filter(items=['col1', 'col2', 'col3'])
chunk_list.append(filtered_chunk)
print('chunk appended')
print()
df = pd.concat(chunk_list)
return df
第二种方法似乎很慢。永远花费450 MB的大小来加载文件,而方法1花费不到一分钟的时间来加载该文件。但是方法1也会导致文件大小为800 MB的容器崩溃。
有什么建议吗?