首页 > 解决方案 > 如何按每一行处理大json文件并有效地转换为csv?

问题描述

我在每一行都有一个带有 json 字符串的大文件,我想选择几个属性并将它们保存为 csv。我有以下代码。大约有 200 万行,我想提取其中的一部分,最多 100 万行。我知道更好的解决方案是将json存储在一个文件中,所以也许有一种方法可以先拆分它?

无论如何,当尝试一次创建数据帧时,这样的代码会达到内存限制。请您提出最合适的解决方案好吗?

import json
import pandas as pd
from itertools import islice
from pandas.io.json import json_normalize

data = []

with open("input.json") as f:
    head = list(islice(f, 0, 100000))

    for line in head:
        if 'cat' in line:
            data.append(json.loads(line))

#creating a dataframe 
df = json_normalize(data, errors='ignore')
df = df[['col1','col2','col3']]
df.to_csv("output.csv", header=True, sep=';')

标签: pythonjsonpandascsv

解决方案


你为什么要head留在记忆中。您可以直接使用循环并在达到100万时停止。


推荐阅读