我有一个约有1万个条目的数据集,我不能每次都请求所有坐标的坐标,因为这将花费很长时间。因此,想法是设置第一行值,然后遍历数据框,检查新位置是否等于旧位置,如果是这种情况,则不必请求新坐标。
import time
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="xxxxx")
location = geolocator.geocode(house['place_name'].iloc[0])
house['lat'].iloc[0]=location.latitude
house['lon'].iloc[0]=location.longitude
for i in range(1,len(house)):
if house['place_name'].iloc[i]==house['place_name'].iloc[i-1]:
house['lat'].iloc[i]= house['lat'].iloc[i-1]
house['lon'].iloc[i]= house['lon'].iloc[i-1]
else:
try:
location = geolocator.geocode(house['place_name'].iloc[i])
house['lat'].iloc[i]=location.latitude
house['lon'].iloc[i]=location.longitude
except:
print('error')
现在,代码运行超级超级慢(没有完全错误),但是我收到以下几个“警告”
A value is trying to be set on a copy of a slice from a DataFrame
我敢肯定,有很多更优雅的方法可以做到这一点,这可能也要短得多。任何见识将不胜感激。