python - Pandas json_normalize 无法在 Python 中处理大型 JSON 文件

标签 python json pandas

我正在尝试使用 json_normalize() 函数将一个大的(大约 900 MB)json 文件规范化为一个 pandas DataFrame。这适用于我正在处理的所有其他文件(大小在 150-500 MB 之间),尽管每个文件都需要几分钟才能完成。然而,对于这个文件,它似乎永远运行并且永远不会完成。我尝试在规范化之前使用 read_json() 将 json 文件直接读取到 DataFrame 中,以及使用 json.loads() 从文件中简单地加载 json。两种方法都有相同的结果。我使用的代码是:

import pandas as pd
import json

path = mf.getPath('dataFile.json')
testTrials = json.loads(open(path)) #testTrials = pd.read_json(path)
testTrials = json_normalize(testTrials['rows'])

最佳答案

您可以将大的 JSON 文件分成几个 block ,一次处理一个 block 。代码如下:

from itertools import zip_longest

def grouper(iterable, n, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

dfs = []
chunk_size = 1000
for json in grouper(jsons,chunk_size):
    df = json_normalize(json)
    dfs.append(df)
pd.concat(dfs) 

关于python - Pandas json_normalize 无法在 Python 中处理大型 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24459408/

相关文章:

python - 舍入问题

json - 使用 Circe 对 AnyVal 类型进行通用派生

java - jackson 滤波器和多态性

javascript - 如何使用特定路径对 JSON 进行字符串化?

python - Pandas DataFrame 按日期移动列以创建滞后值

python - Pandas 将嵌套值与其他列一起切片

Cygwin64 上的 Python 2.7.5 : requests installation fails

python - 在 mongoengine 中使用 get_object_or_404() 方法

Python:如何将 Pandas Dataframe 行值转换为单独的列?

python - Pandas :从数据框中删除以字母开头的行并保存 CSV