лучший способ объединить JSON-файлы для PDF данных - PullRequest
0 голосов
/ 08 марта 2019

У меня есть несколько json-файлов, в которых сохранен ответ от Requests, который содержит 5 записей на строку / список, подобный этому

[{"Record1": "1", "Record2": "2", "Record3": "3", "Record4": "4", "Record5": "5"}]

Должен ли я сохранить его с resp.content, которое возвращает без массива или resp.json() который вложен в массив?Каков наилучший метод?

Каков наилучший способ собрать их (около 10 тыс. Файлов), чтобы я мог поместить их в кадр данных pandas и провести дальнейший анализ?Я попытался поставить это и попытаться загрузить с помощью json.load (), но он возвращается с ошибкой: Дополнительные данные

import json
import codecs
import glob

files = glob.glob('./results/*.json')

with codecs.open('combined_results.json', 'w', encoding='utf-8') as outfile:
    for file in files:
        f = open(file, 'r')
        data = json.load(f)
        json.dump(data, outfile, ensure_ascii=False, indent=None)
        outfile.write("\n")

Вывод:

[{"Record1": "1", "Record2": "2", "Record3": "3", "Record4": "4", "Record5": "5"}]
[{"Record1": "1", "Record2": "2", "Record3": "3", "Record4": "4", "Record5": "5"}]
[{"Record1": "1", "Record2": "2", "Record3": "3", "Record4": "4", "Record5": "5"}]

загрузка комбинированногофайл в объект: (ошибка: дополнительные данные)

f = codecs.open('combined_results.json', 'r', encoding='utf-8')
data = json.load(f)

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Вы можете изменить свой код, чтобы объединить ваши файлы в допустимый объект json:

combined_results = []
with open('combined_results.json', 'w', encoding='utf-8') as outfile:
    for file in files:
        f = open(file, 'r')
        combined_results.append(json.load(f)[0])
    json.dump(combined_results, outfile)

Теперь, чтобы прочитать этот файл в кадре данных, попробуйте pd.read_json:

pd.read_json('combined_results.json')

UPDATE:

Вам вообще не нужен файл combined_results.json. Если вы не хотите, чтобы ваши файлы были объединены в один файл, который вы хотите использовать позже, вы можете напрямую преобразовать список combined_results в фрейм данных.

combined_results = []
for file in files:
    f = open(file, 'r')
    combined_results.append(json.load(f)[0])

pd.DataFrame(combined_results)
0 голосов
/ 08 марта 2019

Попробуйте pd.DataFrame.from_records('combined_results.json')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...