仅读取大型JSON中的特定字段并导入到Pandas Dataframe中

时间:2019-01-10 08:24:36

标签: python json python-3.x pandas dataframe

我有一个包含或多或少10个json文件的文件夹,大小在500到1000 Mb之间。 每个文件都包含约1.000.000行,例如lowlowling:

{ 
    "dateTime": '2019-01-10 01:01:000.0000'
    "cat": 2
    "description": 'This description'
    "mail": 'mail@mail.com'
    "decision":[{"first":"01", "second":"02", "third":"03"},{"first":"04", "second":"05", "third":"06"}] 
    "Field001": 'data001'
    "Field002": 'data002'
    "Field003": 'data003'
    ...
    "Field999": 'data999'
}

我的目标是使用熊猫对其进行分析,因此我想将来自所有文件的数据保存到Dataframe中。 如果循环所有文件,Python将崩溃,因为我没有可用的资源来管理数据。

出于我的目的,我只需要一个包含所有文件中的两列catdateTime的数据框,我想它比我尝试过的具有所有列的整个数据框要轻以仅阅读这两行以及以下代码段:

注意:目前,我只处理一个文件,当我获得快速阅读器代码时,我将循环到所有其他文件(A.json,B.json等)

import pandas as pd
import json
import os.path
from glob import glob

cols = ['cat', 'dateTime']
df = pd.DataFrame(columns=cols)

file_name='this_is_my_path/File_A.json'
with open(file_name, encoding='latin-1') as f:
    for line in f:
        data=json.loads(line)
        lst_dict=({'cat':data['cat'], 'dateTime':data['dateTime']})
        df = df.append(lst_dict, ignore_index=True)

代码可以工作,但是它非常慢,因此一个文件要花一个多小时,而读取所有文件并将其存储到Dataframe中通常要花8-10分钟。 < / p>

有没有办法只读取两个特定的列并以更快的方式追加到Dataframe?

我尝试读取所有JSON文件并将其存储到Dataframe中,然后删除除“ cat”和“ dateTime”以外的所有列,但对于我的MacBook来说似乎太重了。

1 个答案:

答案 0 :(得分:1)

有帮助吗?

步骤1。 从熊猫中读取您的json文件 “ pandas.read_json()”
第2步。 然后从数据框中过滤掉您的2列。

让我知道您是否仍然遇到任何问题。 谢谢