Вложенный JSON Normalize с использованием Pandas, KeyError: «Попробуйте запустить с ошибками ='игнорировать', поскольку ключ 'company' не всегда присутствует»
Я пытаюсь нормализовать JSON, полученный из GraphQL API, и преобразовать его в фрейм данных с помощью json_normalize JSON
[{
"node": {
"organization": {
"company": "System"
},
"id": "15",
"ip": "10.6.11.110",
"name": "devce_name",
"deviceClass": {
"logicalName": "class OEM",
"class": "class",
"description": "OEM",
"deviceCategory": {
"name": "Unknown"
}
},
"asset": {
"location": "",
"make": "make"
},
"events": {
"edges": [
{
"node": {
"message": "Device message",
"severity": "3
}
},
{
"node": {
"message": "message",
"severity": "2",
}
}
]
}
}
},
...
]
Это json_normalize с использованием панд, которые я пытаюсь
nd = pd.json_normalize(
res,
record_path=["node", "events", "edges"],
meta= [["node", "organization", "company"], ["node", "name"], ["node", "ip"], ["node", "id"], ["node", "deviceClass"]]
)
Если мета-внутренний размер был равен 2, то ошибки нет,
например: - meta= [["узел", "организация"], ["узел", "имя"], ["узел", "ip"], ["узел", "идентификатор"], ["узел" , "deviceClass"]]
но когда я попытался найти более двух в списке, я получил ошибку ниже.
например: meta= [["узел", "организация", "компания"], ["узел", "имя"], ["узел", "идентификатор"], ["узел", "класс устройства"]]
**KeyError: 'company' Вышеупомянутое исключение было прямой причиной следующего исключения:....KeyError: «Попробуйте запустить с ошибками ='игнорировать', поскольку ключ 'company' не всегда присутствует» **
Как добавить больше 3-х полей внутри меты?
Спасибо
1 ответ
Я столкнулся с той же проблемой пару дней назад, вы можете попробовать что-то другое, например
nd1 = pd.json_normalize(js, record_path=["node", "events","edges"], /
meta = [["node", "id"]])
nd2 = pd.merge(nd1, pd.json_normalize(js), on='node.id',how='left')