Как использовать json_normalize для json, содержащего список вложенных списковPython

Программы на Python
Anonymous
Как использовать json_normalize для json, содержащего список вложенных списков

Сообщение Anonymous »

Я имею дело со сложной строкой JSON в Python, и у меня возникли проблемы с вводом данных в фрейм данных Pandas. Примеры данных, текущий выход и ожидаемый результат приведены ниже. Я пытаюсь использовать json_normalize, но он не обеспечивает полную нормализацию, и у меня остается несколько столбцов, содержащих списки JSON. Моя конечная цель — вставить это в базу данных SQL, однако строки json обрезаются из-за их длины, поэтому я не могу использовать свой первоначальный план по использованию OPENJSON() для выполнения преобразования в SQL.
Мой json_normalize выглядит следующим образом. Использование max_level=10 работало для всех остальных вызовов API, которые я делал для этого ресурса, за исключением этой конкретной таблицы. Я также пытался составить список по столбцам, но мои попытки не увенчались успехом.

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

incomingJson = json.loads(incomingString)
incomingDataFrame = pd.json_normalize(incomingJson, 'fields', max_level=10)
incomingString выглядит как JSON ниже. Это фиктивные данные, просто для пояснения.

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

{
"fields": [
{
"id": 12345,
"description": "Location",
"choices": [
{
"id": 1,
"name": "Seattle"
},
{
"id": 2,
"name": "Nashville"
}
],
"other_choices": []
},
{
"id": 67372,
"description": "Name",
"choices": [
{
"id": 101,
"name": "John"
},
{
"id": 102,
"name": "Mary"
}
],
"other_choices": []
},
{
"id": 39265,
"description": "Department",
"choices": [
{
"id": 143,
"name": "IT"
},
{
"id": 226,
"name": "HR"
},
{
"id": 394,
"name": "ERG"
}
],
"other_choices": [
{
"id": 9473
}
]
}
]
}
Когда я запускаю свой код, я получаю результат, подобный показанному ниже.



идентификатор
описание
выборы
другие_выборы




12345
Местоположение
[{"id": 1, "name": "Сиэтл"}, {"id" : 2, "имя": "Нэшвилл"}]
[]


67372
Имя
[{"id": 101, "name": "Джон"}, {"id": 102, " name": "Мэри"}]
[]


39265
Отдел
{"id": 143, "name": "IT"}, {"id": 226, "name": "HR "}, {"id": 394, "name": "ERG"
[{"id": 9473}]



Я ожидаю, что результат будет более похож на приведенную ниже таблицу



id
описание
choices.id
choices.name
other_choices.id




12345
Местоположение
1
Сиэтл


< tr>
12345
Местоположение
2
Нэшвилл



67372
Имя
101
Джон



67372
Имя
102
Мария



39265
Отдел
143
ИТ
9473

39265
Отдел
226
Отдел кадров
9473


39265
Отдел
394
ERG
9473



Любая помощь приветствуется.

Подробнее здесь: https://stackoverflow.com/questions/788 ... sted-lists

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