Python Nested JSON Import - конвертировать в таблицу - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь импортировать файл json (в данном случае из экспорта профиля FB), который имеет несколько вложенных уровней. В Excel я могу создать запрос, который за одну минуту преобразует все данные в таблицу (расширение вложенных уровней до новых столбцов восемь или девять раз).

Хотя в python, используя либо функции json, либо функции чтения панд, это кажется невыполнимой задачей. Страницы типа https://www.kaggle.com/jboysen/quick-tutorial-flatten-nested-json-in-pandas# помогают частично сгладить json, но это работает только с одним целевым уровнем. Чтобы преобразовать несколько различных вложенных уровней в одну таблицу, требуется несколько попыток сглаживания, каждый из которых настроен на соответствующий файл.

Я думал, что весь смысл json в том, чтобы сделать такие вещи проще, правда? Поэтому, когда я могу сделать что-то в Excel примерно за 10 кликов, и я не могу найти способ сделать это в python без глубокой настройки, я не могу не задаться вопросом, не упустил ли я что-то. Нет ли простого способа автоматически преобразовать многоуровневый вложенный json в таблицу на python? Или хотя бы с меньшими усилиями? У меня есть целая пачка jsons для импорта, и с такой скоростью лучше использовать Excel для создания из них csv-файлов, чем пытаться подогнать импорт Python для каждого из них. Чего мне не хватает?

1 Ответ

0 голосов
/ 31 октября 2018

Попробуйте это:

def flatten_json(org_json,sep='_'):
    flattened = {}

    def flatten_level(d, prefix=''):
        if type(d) is dict:
            for k in d:
                flatten_level(d[k], prefix + k + sep)
        elif type(d) is list:
            for i,k in enumerate(d):
                flatten_level(k, prefix + str(i) + sep)
        else:
            flattened[prefix[:-1]] = d

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