Nested JSON Normalize using Pandas, KeyError: "Try running with errors='ignore' as key 'company' is not always present"
Nested JSON Normalize using Pandas, KeyError: "Try running with errors='ignore' as key 'company' is not always present"
我正在尝试规范化从 GraphQL API 获取的 JSON 并使用 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 使用 pandas 我正在尝试
nd = pd.json_normalize(
res,
record_path=["node", "events", "edges"],
meta= [["node", "organization", "company"], ["node", "name"], ["node", "ip"], ["node", "id"], ["node", "deviceClass"]]
)
如果 meta inside size 为 2 则没有错误,
例如:- meta= [["节点", "组织"], ["节点", "名称"], ["节点", "ip"], ["节点" , "id"], ["node", "deviceClass"]]
但是当我在列表中尝试超过 2 个时,我得到以下错误。
例如:meta=[[“节点”、“组织”、“公司”]、[“节点”、“名称”]、[“节点”、“id”]、[ “节点”,“设备类”]]
**
键错误:'company'
上述异常是以下异常的直接原因:
....
KeyError:“尝试 运行 errors='ignore' 因为键 'company' 并不总是存在”**
如何在 meta 中添加 3 个以上的字段?
谢谢
几天前我遇到了同样的问题,你可以试试这样的不同方法
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')
我正在尝试规范化从 GraphQL API 获取的 JSON 并使用 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 使用 pandas 我正在尝试
nd = pd.json_normalize(
res,
record_path=["node", "events", "edges"],
meta= [["node", "organization", "company"], ["node", "name"], ["node", "ip"], ["node", "id"], ["node", "deviceClass"]]
)
如果 meta inside size 为 2 则没有错误,
例如:- meta= [["节点", "组织"], ["节点", "名称"], ["节点", "ip"], ["节点" , "id"], ["node", "deviceClass"]]
但是当我在列表中尝试超过 2 个时,我得到以下错误。
例如:meta=[[“节点”、“组织”、“公司”]、[“节点”、“名称”]、[“节点”、“id”]、[ “节点”,“设备类”]]
** 键错误:'company' 上述异常是以下异常的直接原因: .... KeyError:“尝试 运行 errors='ignore' 因为键 'company' 并不总是存在”**
如何在 meta 中添加 3 个以上的字段?
谢谢
几天前我遇到了同样的问题,你可以试试这样的不同方法
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')