0

我正在尝试规范化从 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

nd = pd.json_normalize(
    res,
    record_path=["node", "events", "edges"],
    meta= [["node", "organization", "company"], ["node", "name"], ["node", "ip"], ["node", "id"], ["node", "deviceClass"]]
)

如果元内部大小为 2 则没有错误,

例如:- meta= [["node", "organization"], ["node", "name"], ["node", "ip"], ["node", "id"], ["node" , "设备类"]]

但是当我在列表中尝试超过 2 个时,我得到了以下错误。

例如:meta= [["node", "organization", "company"], ["node", "name"],["node", "id"], ["node", "deviceClass"]]

** KeyError: 'company' 上述异常是以下异常的直接原因: .... KeyError: "Try running with errors='ignore' as key 'company' is not always present"**

如何在元内添加 3 个以上的字段?

谢谢

4

1 回答 1

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')
于 2021-05-20T11:55:32.617 回答