我已经执行了这段代码,它运行得很好,但在第二次运行时,它出现了一个错误,声明“Global name lats not defined”。你知道吗
在这里,我尝试使用纬度和经度将两个数据集链接在一起,然后将一个ID分配给离这个地方最近的一个
我怎样才能解决这个问题?你知道吗
Place['Dr_Address_No'] = -1
place_lats = place['Latitude']
place_lngs = place['Longitude']
Dr_locations = pd.read_csv("dr.csv")
dr_lats = dr_locations['latitude']
dr_lngs = dr_locations['longitude']
def get_nearest_dr(place_lats, place_lngs, dr_lats, dr_lngs):
nearest_drs = []
for placeID in range(lats.shape[0]):
place_lat = lats.iloc[placeID]
place_lng = lngs.iloc[placeID]
lat_distances = (place_lat - dr_lats.iloc[:].values) ** 2
lng_distances = (place_lng - dr_lngs.iloc[:].values) ** 2
distance_vector = np.sqrt(lat_distances + lng_distances)
closest_index = distance_vector.argmin()
closest_dr = dr_locations.iloc[closest_index]
dr_full = dr_address.iloc[closest_index]
nearest_drs.append(dr_full['Dr No'])
return pd.Series(nearest_drs)
Place['Dr_No'] = get_nearest_dr(place_lats, place_lngs, dr_lats, dr_lngs)
Place
尝试改变
至
正如我在最初的评论中所说的,代码中没有定义变量
lats
或lngs
,因此它在for placeID in range(lats.shape[0]):
上失败,因为您试图访问未定义的变量。你知道吗lats
在函数中的任何位置都不存在。也许你的意思是place_lats
该错误意味着您试图使用代码中未定义的变量
lats
。如果不更好地理解代码的作用,就很难准确地说出修复方法,但下面是我的猜测:用定义的
place_lats
替换lats
的用法。您还可以将函数的声明更改为def get_nearest_dr(lats, lngs, dr_lats, dr_lngs):
它将在代码中定义
lats
和lngs
。你知道吗相关问题 更多 >
编程相关推荐