使用Pandas执行嵌套JSON规范化时引发KeyError

sbdsn5lh  于 2022-11-20  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在尝试规范化从GraphQL API获取的JSON,并使用json_normalize JSON将其转换为 Dataframe

[{
          "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内部大小为2,则没有错误,
例如:-** meta= [[“节点”,“组织”],[“节点”,“名称”],[“节点”,“IP”],[“节点”,“ID”],[“节点”,“设备类”]]**
但当我尝试在列表中超过2时,我得到下面的错误。
例如:** meta= [[“节点”,“组织”,“公司”],[“节点”,“名称”],[“节点”,“ID”],[“节点”,“设备类”]]**

KeyError:'company'上述异常是导致以下异常的直接原因:....密钥错误:“尝试运行错误='ignore',因为关键字'company'并不总是存在”
如何在 meta中添加3个以上的字段?

谢谢

68bkxrlz

68bkxrlz1#

几天前我坚持了同样的问题,你可以尝试一些不同的东西,像这样

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')

相关问题