У меня есть ответ 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 вручную, поэтому у меня есть решение на основе циклов, которое работает, но оно слишком медленное.