Json_normalize с несколькими путями записиPython

Программы на Python
Anonymous
Json_normalize с несколькими путями записи

Сообщение Anonymous »

Я использую пример, приведенный в документации json_normalize, приведенной здесь pandas.json_normalize — документация pandas 1.0.3, к сожалению, я не могу вставить свой настоящий JSON, но этот пример работает. Вставлено из документации:

Код: Выделить всё

data = [{'state': 'Florida',
'shortname': 'FL',
'info': {'governor': 'Rick Scott'},
'counties': [{'name': 'Dade', 'population': 12345},
{'name': 'Broward', 'population': 40000},
{'name': 'Palm Beach', 'population': 60000}]},
{'state': 'Ohio',
'shortname': 'OH',
'info': {'governor': 'John Kasich'},
'counties': [{'name': 'Summit', 'population': 1234},
{'name': 'Cuyahoga', 'population': 1337}]}]
result = json_normalize(data, 'counties', ['state', 'shortname',
['info', 'governor']])
result

name  population    state shortname info.governor
0        Dade       12345   Florida    FL    Rick Scott
1     Broward       40000   Florida    FL    Rick Scott
2  Palm Beach       60000   Florida    FL    Rick Scott
3      Summit        1234   Ohio       OH    John Kasich
4    Cuyahoga        1337   Ohio       OH    John Kasich
Что, если бы JSON был показан ниже, где информация представляет собой массив, а не словарь:

Код: Выделить всё

data = [{'state': 'Florida',
'shortname': 'FL',
'info': [{'governor': 'Rick Scott'},
{'governor': 'Rick Scott 2'}],
'counties': [{'name': 'Dade', 'population': 12345},
{'name': 'Broward', 'population': 40000},
{'name': 'Palm Beach', 'population': 60000}]},
{'state': 'Ohio',
'shortname': 'OH',
'info': [{'governor': 'John Kasich'},
{'governor': 'John Kasich 2'}],
'counties': [{'name': 'Summit', 'population': 1234},
{'name': 'Cuyahoga', 'population': 1337}]}]
Как бы вы получили следующий результат, используя json_normalize:

Код: Выделить всё

         name  population    state shortname info.governor
0        Dade       12345   Florida    FL    Rick Scott
1        Dade       12345   Florida    FL    Rick Scott 2
2     Broward       40000   Florida    FL    Rick Scott
3     Broward       40000   Florida    FL    Rick Scott 2
4  Palm Beach       60000   Florida    FL    Rick Scott
5  Palm Beach       60000   Florida    FL    Rick Scott 2
6      Summit        1234   Ohio       OH    John Kasich
7      Summit        1234   Ohio       OH    John Kasich 2
8    Cuyahoga        1337   Ohio       OH    John Kasich
9    Cuyahoga        1337   Ohio       OH    John Kasich 2
Или, если есть другой способ сделать это, дайте мне знать.

Подробнее здесь: https://stackoverflow.com/questions/611 ... cord-paths

Вернуться в «Python»