Pandas DataFrame из сложного вложенного JSON без циклов - PullRequest
0 голосов
/ 14 мая 2019

У меня есть ответ JSON, который я превратил в комбинацию списков и диктов с помощью json.loads, но я не могу превратить результат в нужный DataFrame. Структура, которую я получаю из json.loads, представляет собой список списков диктов, как показано ниже. Может быть разное количество диктовок, а также нет диктовок (что приводит к пустой записи списка).

[[],
 [],
 [{'number': 2, 'power': 2637.0, 'load': 58.6}],
 [{'number': 2, 'power': 2565.0, 'load': 57.0}],
 [{'number': 2, 'power': 2467.0, 'load': 54.8}],
 [{'number': 2, 'power': 1495.0, 'load': 33.2},{'number': 4, 'power': 1034.0, 'load': 34.5}],
 [{'number': 2, 'power': 1377.0, 'load': 30.6},{'number': 4, 'power': 912.0, 'load': 30.4}],
 [{'number': 1, 'power': 533.0, 'load': 11.8},{'number': 2, 'power': 1463.0, 'load': 32.5},{'number': 4, 'power': 969.0, 'load': 32.3}]
]

Я пробовал разные подходы с json_normalize от Pandas, но я обычно заканчиваю тем, что каждая запись строки является диктом.

В идеале мне бы хотелось, чтобы DataFrame имел числовое значение в качестве имени столбца и значение мощности в соответствующем поле, где самый внешний индекс списка становится индексом DataFrame. Пустые списки (как и первые два) должны содержать строку со значениями nan.

      1      2      4
0   nan    nan    nan
1   nan    nan    nan
2   nan   2637    nan
3   nan   2565    nan
4   nan   2467    nan
5   nan   1495   1034
6   nan   1377    912
7   533   1463    969

Это нужно сделать быстро, так как наборы данных становятся довольно большими. В настоящее время я перебираю индексы списков и затем присваиваю значение в DataFrame вручную, поэтому у меня есть решение на основе циклов, которое работает, но оно слишком медленное.

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