从JSON结果中提取位置坐标

问题描述

我正在使用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])