gpt4 book ai didi

python - 解析来自 MapQuest 反向地理编码数据的信息

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:11 25 4
gpt4 key购买 nike

大家好,我在解析 Mapquest API 查询中的信息时遇到问题。我正在尝试从 geocode_data 列中解析数据并将其放入单独的列中。我正在尝试提取地址,特别是下面的地理编码数据中的以下组件。粗体字是我试图提取的内容。

'providedLocation': {'latLng': {'lat': 52.38330319, 'lng': 4.7959011}}, '位置': [{'adminArea6Type': '邻里', '街道': (4 ) '25 Philip Vingboonsstraat', 'adminArea4Type': '县', 'adminArea3Type': '州', 'displayLatLng': (9){'lat': 52.383324, (10){ 'lng ': 4.795784}, (7) 'adminArea3': '北荷兰', 'adminArea1Type': '国家', 'linkId': '0', 'adminArea4': 'MRA', 'dragPoint':假,'mapUrl':'http://www.mapquestapi.com/staticmap/v4/getmap?key=Cxk9Ng7G6M8VlrJytSZaAACnZE6pG3xp&type=map&size=225,160&pois=purple-1,52.3833236,4.7957837,0,0,|&center=52.3833236,4.7957837&zoom=15&rand=-152222465 ', 'type': 's', '(5)postalCode': '1067BG', 'latLng': {'lat': 52.383324, 'lng': 4.795784},(6) 'adminArea5': '阿姆斯特丹', 'adminArea6': '阿姆斯特丹', 'geocodeQuality': '地址', 'unknownInput': '', 'adminArea5Type': '城市', 'geocodeQualityCode': 'L1AAA', (8) 'adminArea1': ' NL', 'sideOfStreet': 'N'}]}

我尝试构建我的代码,但我不断收到 KeyErrors。任何人都可以修复我的代码,以便我能够提取不同的地址组件用于我的研究。谢谢!我的代码是正确的,直到位置接近尾声为止。然后我收到一个关键错误。

import pandas as pd
import json
import requests

df = pd.read_csv('/Users/albertgonzalobautista/Desktop/Testing11.csv')

df['geocode_data'] = ''
df['address']=''
df['st_pr_mn']= ' '

def reverseGeocode(latlng):
result = {}
url = 'http://www.mapquestapi.com/geocoding/v1/reverse?key={1}&location={0}'
apikey = 'Cxk9Ng7G6M8VlrJytSZaAACnZE6pG3xp'
request = url.format(latlng, apikey)
data = json.loads(requests.get(request).text)
if len(data['results']) > 0:
result = data['results'][0]
return result


for i, row in df.iterrows():
df['geocode_data'][i] = reverseGeocode(df['lat'][i].astype(str) + ',' + df['lon'][i].astype(str))

for i, row in df.iterrows():
if 'locations' in row['geocode_data']:
for component in row['locations']:
print (row['locations'])
df['st_pr_mn'][i] = row['adminArea3']

最佳答案

首先,根据您的if条件,locationsrow['geocode_data'] 中的关键,所以你应该尝试 row['geocode_data']['locations'] ,不是row['locations'] ,这很可能是您得到 KeyError 的原因。 .

然后根据你在OP中给出的json,看起来像 locations key 存储一个列表,因此迭代每个元素(就像您现在所做的那样)并从 component 获取所需的元素不是row 。示例-

for i, row in df.iterrows():
if 'locations' in row['geocode_data']:
for component in row['geocode_data']['locations']:
print (row['geocode_data']['locations'])
df['st_pr_mn'][i] = component['adminArea3']

虽然这会覆盖df['st_pr_mn'][i]具有 component['adminArea3'] 的新值对于 row['geocode_data']['locations'] 列表中的每本字典。如果列表中只有一个元素,那么就可以了,否则您必须决定如何存储多个值,也许可以使用列表。

关于python - 解析来自 MapQuest 反向地理编码数据的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31970817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com