【发布时间】:2018-09-19 03:16:24
【问题描述】:
所以这似乎是一个奇怪的问题,但我有一个带有地址的熊猫DataFrame,我想对其进行地理编码,以便获得纬度和经度。
感谢这个非常有用的线程 (new column with coordinates using geopy pandas),我的代码可以使用 .apply(),但我的问题是所有开放的 API 都对它们允许的每秒请求数有严格限制,并且每天。
我无法找到任何方法来限制我的代码以匹配 API 的限制。我的 DF 有 25K 行,但只有创建最多 5 行的子集才能成功进行地理编码。
我对 python 和 pandas 没有太多经验,但在 SAS 中,DATA 步骤一次迭代一行,所以我可以有一个 sleep 命令来限制请求。用 python/pandas 实现类似功能的最佳方法是什么?
编辑:所以根据到目前为止的答案,我想确认,我的代码将从:
df_small['city_coord'] = df_small['Address'].apply(geolocator.geocode).apply(lambda x: (x.latitude, x.longitude))
到:
df_small = df_clean[:5]
def f(x, delay=1):
# run your code
sleep(delay)
return geolocator.geocode(x)
df_small['city_coord'] = df_small['Address'].apply(f).apply(lambda x: (x.latitude, x.longitude))
【问题讨论】: