Необъяснимая ошибка ключа при использовании метода нормализации панд - PullRequest
0 голосов
/ 07 июня 2018

Следующий код

import pandas as pd

dic = {'_id': '5436e3abbae478396759f0cf', 'meta': {'clinical': {'benign_malignant': 'benign', 'age_approx': 55, 'sex': 'female', 'diagnosis': 'nevus', 'diagnosis_confirm_type': None, 'anatom_site_general': 'anterior torso', 'melanocytic': True}, 'acquisition': {'image_type': 'dermoscopic', 'pixelsX': 1022, 'pixelsY': 767}}, 'name': 'ISIC_0000000'}

frame = pd.io.json.json_normalize(dic)

Бросает

KeyError: 'diagnosis_confirm_type'

Я использую версию pandas 0.23.0.Код работает без ошибок в версии 0.22.0.

Обновление:

Очевидно, в 0.23.0 действительно была ошибка, вызывающая эту проблему.См https://github.com/pandas-dev/pandas/pull/21164

1 Ответ

0 голосов
/ 07 июня 2018

Если вы получаете его изначально как строку, вам даже не нужно регулярное выражение:

validPJson = [line.replace('None', '"None"').replace('True', '"True"') for line in invalidJsonObjects]

Узнайте, почему это лучше, чем регулярное выражение: Используйте Python string.replace против re.sub

EDIT: Из комментариев я понял, что ваша проблема заключается в загрузке файла этого формата без его предварительного исправления, и именно поэтому вы получаете ошибки при загрузке (кстати, эти ошибки должны действительнобыть в вашем вопросе, иначе вы просто запутали множество людей, пытающихся помочь).

Мое предложение, сначала исправьте файл аналогичным способом:

with open(pathToFile, 'r') as fp:
    contents = fp.read()
with open(pathToFile, 'w') as fp:
    fp.write(contents.replace('None', '"None"').replace('True', '"True"'))

Только послекоторые пытаются использовать json для чтения файла, посмотреть, работает ли это

...