遍历大熊猫数据帧,进行地理编码需要永远吗?

时间:2019-06-23 20:48:01

标签: pandas loops iteration geocode

我有一个约有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

我敢肯定,有很多更优雅的方法可以做到这一点,这可能也要短得多。任何见识将不胜感激。

0 个答案:

没有答案