问题描述
我正在使用geocodio从数据框中的2272个地址列表中获取坐标。当我尝试使用json_normalize展平结果时,我得到了坐标,但是我的数据框是4800+行,而不是每个地址正确的2272行。
import json
from pandas.io.json import json_normalize
addys = json_normalize(locations,record_path=['results'])
addys = addys[['location']]
结果JSON输出如下:(我只希望每个条目的'结果'-'位置'部分下的每个地址的经/纬坐标)
[{'input': {'address_components': {'number': '3704','predirectional': 'N','street': 'Western',...
'zip': '73118','country': 'US'},'formatted_address': '3704 N Western,Oklahoma City,OK 73118'},'results': [{'address_components': {'number': '3704',...
'zip': '73118','formatted_address': '3704 N Western Ave,OK 73118','location': {'lat': 35.507996,'lng': -97.52952},...
'source': 'Oklahoma'},{'address_components': {'number': '3704',...
'country': 'US'},'location': {'lat': 35.508013,'lng': -97.529453},...
'source': 'Acog Counties'}]},{'input': {'address_components': {'number': '1503','street': 'Winding Ridge',
解决方法
这个主意是读字典。像这样:
import json
data = json.loads('{"a":{"b":{"location": {"lat": 35.507996,"lng": -97.52952}}}}')
data = data["a"]["b"]["location"]
print(data)
,
您还可以将嵌套的json文件读取为pandas DataFrame。命名您的文件d
(这是您在问题中提供的json文件)。用
df = pd.json_normalize(d)
df.columns = df.columns.map(lambda x: x.split(".")[-1])