【问题标题】:(pandas json_normalize) Nested Json(pandas json_normalize) 嵌套 Json
【发布时间】:2020-01-29 14:25:23
【问题描述】:

我正在尝试normalize 一个非常嵌套但似乎无法正常工作的 json。

这是 Json

  "results": [
    {
      "group": {
        "mediaType": "mail"
      },
      "data": [
        {
          "interval": "2020-01-20T23:00:00.000Z/2020-01-21T23:00:00.000Z",
          "metrics": [
            {
              "metric": "nOf",
              "stats": {
                "count": 31
              }
            },
            {
              "metric": "tHa",
              "stats": {
                "max": 4115605,
                "min": 47151,
                "count": 30,
                "sum": 36606219
              }
            }
          ]
        }
      ]
    }

我试过的是这个

from pandas.io.json import json_normalize

data = json_normalize(response_json, 'results', ['mediaType', 'interval', ['metrics', 'metric', ['stats']]])

我想要得到的是一个按mediaType 分组的df,并查看像nOf.counttHa.max 等这样的统计数据。

提前致谢!

【问题讨论】:

    标签: python json pandas


    【解决方案1】:

    仅供参考,我使用此功能解决了它

    def flatten_json(y):
        out = {}
    
        def flatten(x, name=''):
            if type(x) is dict:
                for a in x:
                    flatten(x[a], name + a + '_')
            elif type(x) is list:
                i = 0
                for a in x:
                    flatten(a, name + str(i) + '_')
                    i += 1
            else:
                out[name[:-1]] = x
    
        flatten(y)
        return out
    
    flat = flatten_json(response_json)
    normalized_df = json_normalize(flat)
    

    【讨论】:

    • 这样有效率吗?
    猜你喜欢
    • 1970-01-01
    • 2020-07-21
    • 2022-07-10
    • 2021-05-24
    • 2019-11-15
    • 2022-01-02
    • 2018-01-07
    • 2019-04-11
    • 2019-02-12
    相关资源
    最近更新 更多