我一般都是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文件?
Current Code Results
您需要先重新整形数据 . 这似乎是你想要的:
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 j 是一个简单的list comprehension,用于将原始列表中的每个项目映射到每个项目的"fields"键 .
v['fields'] for v in j
您要查找的数据位于“字段”列中,该列包含字典:
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'])
2 回答
您需要先重新整形数据 . 这似乎是你想要的:
得到:
第二行中的
v['fields'] for v in j
是一个简单的list comprehension,用于将原始列表中的每个项目映射到每个项目的"fields"键 .您要查找的数据位于“字段”列中,该列包含字典:
您可以直接使用json模块,因为在这种情况下处理数据很容易: