2016-11-21 3 views
0

Google지도 API를 사용하여 미국 국립 공원의 데이터를 얻었습니다. 이 데이터를 팬더 데이터 프레임으로 표준화하려고합니다. table = pd.io.json.json_normalize(park_json) 을 그리고이 같은 테이블을 생성합니다 :google maps api json to pandas df

그러나이 작동하지 않습니다 enter image description here

내가 처음 결과 만 열을 정상화 시도했지만이 오류를 제공합니다 : 형식 오류 : 목록 지수는 정수 또는 분할해야합니다 , not str

나는 다음을 시도했다 :`new_table = pd.read_json ((table [ 'results']). to_json(), orient = 'index') ' 오류 : ValueError : 배열은 모두 같아야한다. 길이

제안 사항이 있으십니까? 고맙습니다!!!

예 JSON : 적절히 구조화 JSON 함께 {'status': 'OK', 'results': [{'formatted_address': 'Acadia National Park, Mt Desert, ME 04660, USA', 'types': ['establishment', 'park', 'point_of_interest'], 'place_id': 'ChIJJSmiDrKjrkwRhFVV_A4i32I', 'address_components': [{'types': ['establishment', 'point_of_interest'], 'long_name': 'Acadia National Park', 'short_name': 'Acadia National Park'}, {'types': ['locality', 'political'], 'long_name': 'Mount Desert', 'short_name': 'Mt Desert'}, {'types': ['administrative_area_level_2', 'political'], 'long_name': 'Hancock County', 'short_name': 'Hancock County'}, {'types': ['administrative_area_level_1', 'political'], 'long_name': 'Maine', 'short_name': 'ME'}, {'types': ['country', 'political'], 'long_name': 'United States', 'short_name': 'US'}, {'types': ['postal_code'], 'long_name': '04660', 'short_name': '04660'}], 'geometry': {'location_type': 'APPROXIMATE', 'location': {'lng': -68.2733346, 'lat': 44.3385559}, 'viewport': {'southwest': {'lng': -68.4344785, 'lat': 44.2350589}, 'northeast': {'lng': -68.1591412, 'lat': 44.40370240000001}}}}]} {'status': 'OK', 'results': [{'formatted_address': 'Adams National Historical Park, 1250 Hancock St, Quincy, MA 02169, USA', 'types': ['establishment', 'museum', 'park', 'point_of_interest'], 'place_id': 'ChIJbbPB5rB844kR7hOzzjBr4Cs', 'address_components': [{'types': ['establishment', 'point_of_interest'], 'long_name': 'Adams National Historical Park', 'short_name': 'Adams National Historical Park'}, {'types': ['street_number'], 'long_name': '1250', 'short_name': '1250'}, {'types': ['route'], 'long_name': 'Hancock Street', 'short_name': 'Hancock St'}, {'types': ['locality', 'political'], 'long_name': 'Quincy', 'short_name': 'Quincy'}, {'types': ['administrative_area_level_2', 'political'], 'long_name': 'Norfolk County', 'short_name': 'Norfolk County'}, {'types': ['administrative_area_level_1', 'political'], 'long_name': 'Massachusetts', 'short_name': 'MA'}, {'types': ['country', 'political'], 'long_name': 'United States', 'short_name': 'US'}, {'types': ['postal_code'], 'long_name': '02169', 'short_name': '02169'}], 'geometry': {'location_type': 'APPROXIMATE', 'location': {'lng': -71.00379099999999, 'lat': 42.252297}, 'viewport': {'southwest': {'lng': -71.00513998029149, 'lat': 42.2509480197085}, 'northeast': {'lng': -71.00244201970848, 'lat': 42.25364598029149}}}}]}

+0

원하는 데이터는 무엇입니까? 'geometry' 또는 단지'address_components'입니까? –

+0

기하학, 감사합니다! –

답변

1

는이 작업을 수행 할 수

import json 
import pandas 

df = pandas.DataFrame(json.load(open('example.json', 'r')).items()) 

최상위 JSON 속성 이름 칼럼 (1)에서의 대응하는 값과 열 0 일 것이다. 이것은 원래 객체 안에 중첩 된 모든 json 객체에도 적용됩니다. json 샘플을 사용할 수는 없지만 json의 첫 번째 예제와 함께 작동합니다. http://jsonapi.org/examples/