如何解决使用 for 循环传递错误并用 None 填充行
我正在使用 for 循环遍历数据框中的行,并将函数应用于其中两列中的值,以使用 geopy 从城市名称获取坐标。一些值抛出错误,我想在 for 循环中使用 try / except (或 catch?),以便在将 geopy 应用于其中一个值抛出错误的情况下,python 只是用“无”填充该行' 然后我可以返回并删除那些带有 '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'
解决方法
如果您想将 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 个额外的列,其中包含来自函数的相应经纬度结果。
并删除您可以使用的 NaN 值
df.dropna()
但请记住,对于庞大的数据集,单独迭代每一行可能会很慢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。