【问题标题】:Group By and Count occurences of values in list of nested dictsGroup By 和 Count 嵌套字典列表中值的出现次数
【发布时间】:2021-01-08 15:46:39
【问题描述】:

我有一个结构如下的 JSON 文件:

{
  "content": [
    {
      "name": "New York",
      "id": "1234",
      "Tags": {
        "hierarchy": "CITY"
      }
    },
    {
      "name": "Los Angeles",
      "id": "1234",
      "Tags": {
        "hierarchy": "CITY"
      }
    },
    {
      "name": "California",
      "id": "1234",
      "Tags": {
        "hierarchy": "STATE"
      }
    }
  ]
}

作为结果,我想要一个 CSV 中的表格视图,如下所示:

tag.key tag.value occurrance
hierarchy CITY 2
hierarchy STATE 1

意思是我想计算我的 json 文件中每个唯一“标签”的出现次数,并创建一个输出 csv 来显示这一点。我原来的 json 文件很大。

【问题讨论】:

    标签: python json python-3.x pandas dataframe


    【解决方案1】:

    首先使用ast.literal_eval函数构造一个字典对象,然后将该对象拆分得到一个键值元组,以便使用zip创建一个数据框。将groupby应用于新形成的dataframe,最后通过df_agg.to_csv创建一个.csv文件如

    import json
    import ast
    import pandas as pd    
    Js= """{
      "content": [
        {
          "name": "New York",
          "id": "1234",
          "Tags": {
            "hierarchy": "CITY"
          }
        },
        ....
        ....
        {
          "name": "California",
          "id": "1234",
          "Tags": {
            "hierarchy": "STATE"
          }
        }
      ]
    }"""
    data = ast.literal_eval(Js)     
    key = []
    value=[]
    for i in list(range(0,len(data['content']))):
        value.append(data['content'][i]['Tags']['hierarchy'])
        for j in data['content'][i]['Tags']:
            key.append(j)
    
    df = pd.DataFrame(list(zip(key, value)), columns =['tag.key', 'tag.value'])
    df_agg=df.groupby(['tag.key', 'tag.value']).size().reset_index(name='occurrance')
    df_agg.to_csv(r'ThePath\\to\\your\\file\\result.csv',index = False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      相关资源
      最近更新 更多