我使用for循环遍历数据框中的行,并对其中两列中的值应用函数,以便使用geopy从城市名称中获取坐标。一些值抛出错误,我想使用try / except (或catch?)在for循环中,以便在将geopy应用于其中一个值抛出错误的情况下,python只需使用'None‘填充该行,然后我可以返回并使用'None’删除这些行。有没有办法做到这一点?下面是我正在使用的代码:
list_lat = [] # create empty list for lat
list_long = [] # create empty list for long
for index, row in df.iterrows(): # iterate over rows in dataframe
try:
City = row['City Name']
State = row['State Name']
query = str(City)+','+str(State)
location = geolocator.geocode(query)
lat = location.latitude
long = location.longitude
#print(lat, long) #testing purposes
list_lat.append(lat)
list_long.append(long)
except Exception as e:
# lat = 'None'
# long = 'None'
发布于 2021-03-31 13:17:17
如果您希望将lat和long添加为列,可以尝试如下所示。
def fn(row):
city = row['City Name']
State = row['State Name']
query = str(City)+','+str(State)
try:
location = geolocator.geocode(query)
lat = location.latitude
long = location.longitude
return lat,long
except:
return np.NaN,np.NaN
df[['lat','long']] = df.apply(lambda x: fn(x),axis=1,result_type='expand')这将产生2个额外列,其中包含对应的lat和long result from。
要删除NaN值,您可以使用
df.dropna()但请记住,对于庞大的数据集,单独迭代每一行可能会很慢
https://stackoverflow.com/questions/66881652
复制相似问题