繁体   English   中英

Group By 和 Count 嵌套字典列表中值的出现次数

[英]Group By and Count occurences of values in list of nested dicts

我有一个 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 中的表格视图,如下所示:

标签.key 标签值 发生
等级制度 城市 2
等级制度 STATE 1

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

Firstly construct a dictionary object by using ast.literal_eval function, and then split this object to get a key, value tuples in order to create a dataframe by using 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM