繁体   English   中英

如何在Python中解析JSON文件

[英]How to parse a JSON file in Python

一般而言,我还是python新手。 我目前正在尝试读取从此站点提取的JSON文件:

https://public.opendatasoft.com/explore/dataset/us-115th-congress-members/table/?rows=100&lang=EN&refine.rep_sen=Senator&exclude.rep_sen=Representative

但是,当我在使用中阅读它时:

senators_json = pd.read_json('us-115th-congress-members.json', orient = 'columns')
senators_json

我似乎无法访问我真正想要的字段(在“字段”列中)。 我在读取json文件方面是否完全脱离基础?

当前代码结果

您需要先重塑数据。 这似乎是您想要的:

j = json.load(open('/tmp/us-115th-congress-members.json', 'r'))
df = pd.DataFrame(v['fields'] for v in j) 
df.columns

得到:

Index(['district', 'geo_point_2d', 'geo_shape', 'geoid', 'image', 'name', 'party', 'rep_sen', 'state_code', 'state_label', 'url'], dtype='object')

第二行v['fields'] for v in jv['fields'] for v in jv['fields'] for v in j是一个简单的列表理解,用于将原始列表中的每个项目映射到每个项目的“ fields”键。

您要查找的数据位于“字段”列中,该列包含字典:

import pandas as pd
df = pd.read_json("us-115th-congress-members.json")

df.shape
# (544, 5)

df.columns
Index(['datasetid', 'fields', 'geometry', 'record_timestamp', 'recordid'], dtype='object')

df["fields"][0].keys()
# dict_keys(['rep_sen', 'name', 'district', 'state_label', 'url', 'image', 'geo_point_2d', 'geo_shape', 'party', 'state_code', 'geoid'])

df["fields"][0]["name"]
# 'Palmer, Gary J.'

您可以直接使用json模块,因为在这种情况下可以轻松处理数据:

import json
with open("us-115th-congress-members.json", "rt") as f:
    df = json.load(f)

df[0].keys()
# dict_keys(['datasetid', 'recordid', 'fields', 'geometry', 'record_timestamp'])

暂无
暂无

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

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