全局名称“lats”未定义

2024-06-16 11:54:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经执行了这段代码,它运行得很好,但在第二次运行时,它出现了一个错误,声明“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

Tags: noplacedrslnglatdrlocationsnearest
3条回答

尝试改变

for placeID in range(lats.shape[0]):
        place_lat = lats.iloc[placeID]
        place_lng = lngs.iloc[placeID]

for placeID in range(place_lats.shape[0]):
        place_lat = place_lats.iloc[placeID]
        place_lng = place_lngs.iloc[placeID]

正如我在最初的评论中所说的,代码中没有定义变量latslngs,因此它在for placeID in range(lats.shape[0]):上失败,因为您试图访问未定义的变量。你知道吗

lats在函数中的任何位置都不存在。也许你的意思是place_lats

for placeID in range(lats.shape[0]):
        place_lat = lats.iloc[placeID]
        place_lng = lngs.iloc[placeID]

该错误意味着您试图使用代码中未定义的变量lats。如果不更好地理解代码的作用,就很难准确地说出修复方法,但下面是我的猜测:

for placeID in range(place_lats.shape[0]):
    place_lat = place_lats.iloc[placeID]
    place_lng = place_lngs.iloc[placeID]

用定义的place_lats替换lats的用法。您还可以将函数的声明更改为

def get_nearest_dr(lats, lngs, dr_lats, dr_lngs):

它将在代码中定义latslngs。你知道吗

相关问题 更多 >