【问题标题】:Extract Location Coordinates from JSON results从 JSON 结果中提取位置坐标
【发布时间】:2021-01-31 01:55:15
【问题描述】:

我正在使用 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',
     'predirectional': 'N',
     'street': 'Western',
     ...
     'zip': '73118',
     'country': 'US'},
    'formatted_address': '3704 N Western Ave, Oklahoma City, OK 73118',
    'location': {'lat': 35.507996, 'lng': -97.52952},
    ...
    'source': 'Oklahoma'},
   {'address_components': {'number': '3704',
     'predirectional': 'N',
     'street': 'Western',
     ...
     'country': 'US'},
    'formatted_address': '3704 N Western Ave, Oklahoma City, OK 73118',
    'location': {'lat': 35.508013, 'lng': -97.529453},
    ...
    'source': 'Acog Counties'}]},
 {'input': {'address_components': {'number': '1503',
    'street': 'Winding Ridge',

【问题讨论】:

  • 最终形状 (addys.shape) 返回 4882, 1

标签: python json pandas geocoding


【解决方案1】:

我们的想法是查字典。像这样:

import json

data = json.loads('{"a":{"b":{"location": {"lat": 35.507996, "lng": -97.52952}}}}')

data = data["a"]["b"]["location"]

print(data)

【讨论】:

  • 我理解过滤方面的这种思维水平。我用'input'和'results'替换了'a','b',并成功打印了两个坐标......但是我如何将它应用于整个json变量?我需要循环遍历整个过程吗?
【解决方案2】:

您还可以将嵌套的 json 文件读取为 pandas DataFrame。调用您的文件d(这是您在问题中提供的 json 文件)。阅读它

df = pd.json_normalize(d)
df.columns = df.columns.map(lambda x: x.split(".")[-1])

【讨论】:

  • 这并没有特别的帮助,因为“结果”列根本没有格式化并且包含嵌套信息。这是我最初使用 addys = json_normalize(locations, record_path=['results']) 使用 'record_path' 过滤的内容 --locations 是 json 结果的名称
猜你喜欢
  • 2012-05-27
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2011-11-28
  • 2023-04-07
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多