为了账号安全,请及时绑定邮箱和手机立即绑定

在熊猫中使用地理编码器 api 查找位置

在熊猫中使用地理编码器 api 查找位置

凤凰求蛊 2021-12-08 10:31:16
我在熊猫数据框中有一系列城市名称。为此,我需要找出特定城市的地址并将它们存储在同一数据框中的单独列中。City 列也包含 NaN 值。我正在分别获取给定位置/城市名称的地址。但它在熊猫数据框中不起作用data = [['madurai',10],['NaN',12],['hosur',13]]df = pd.DataFrame(data,columns=['Name','Age'])from geopy.geocoders import Nominatimgeolocator = Nominatim()for i in df.Name:    if i == "NaN":       continue    loc = geolocator.geocode(i)address = loc.addressprint(address)它适用于数据框,但仅返回最后一个地址,而不是整个 3 个城市。如果我们改变如下顺序,data = [['Nan',10],['Madurai',12],['hosur',13]]df = pd.DataFrame(data,columns=['Name','Age'])我收到错误:GeocoderTimedOut:服务超时查询: 1. 我希望将结果(地址)保存在列中 2. 如何处理 Nan 值
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

您可以通过以下方式添加带有地址的列:


import pandas as pd

data = [['madurai',10],['NaN',12],['hosur',13]]

df = pd.DataFrame(data,columns=['Name','Age'])

from geopy.geocoders import Nominatim

geolocator = Nominatim()

for i in df.Name:

    if i == "NaN":

        continue

    df.loc[df.Name == i, 'Address'] = geolocator.geocode(i)


print(df)


查看完整回答
反对 回复 2021-12-08
?
富国沪深

TA贡献1790条经验 获得超9个赞

您只能获得最后一个值,因为您loc每次都在循环中进行替换。该GeocoderTimedOut: Service timed out错误的出现是因为你正在为许多请求到服务器。您应该sleep在请求之间包含一个。

尝试:


import pandas as pd

from geopy.geocoders import Nominatim

import time


data = [['madurai',10],['NaN',12],['hosur',13]]

df = pd.DataFrame(data,columns=['Name','Age'])

geolocator = Nominatim(user_agent='test')

address = []

for i in df.Name:

    time.sleep(3)

    if i == "NaN":

       address.append('NaN')

       continue    

    address.append(geolocator.geocode(i))


df['address'] = address


查看完整回答
反对 回复 2021-12-08
?
潇湘沐

TA贡献1816条经验 获得超6个赞

我在下面的请求之间引入了时间延迟和几行来查看进度条


from geopy.geocoders import Nominatim

geolocator = Nominatim()

from geopy.extra.rate_limiter import RateLimiter

geocode = RateLimiter(geolocator.geocode, min_delay_seconds=1)

final['Geolocation'] = final['city'].apply(geocode)

from tqdm import tqdm

tqdm.pandas()

final['Geolocation'] = final['city'].progress_apply(geocode)

它现在有效。


查看完整回答
反对 回复 2021-12-08
  • 3 回答
  • 0 关注
  • 254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信