我正在使用python,可以使用advise来最好地完成这个计算。输出应该向csv添加两个额外的列。1) 应指明最近的高中,2)应指明距离这所高中的公里数。
我得到了一个有效的distance函数,但在比较一个特定行与所有其他指定行的距离时遇到了问题,例如比较一个较低的主行1-4与所有其他主行1-8的距离,并将输出保存到一个新列中。
谢谢
EDIT2-目前的工作代码:
该算法在一些小样本数据下运行,但扩展性不好。我尝试处理的60000个数据点出现内存错误
# Algorithm for calculating the closest upper primary school for lower primary schools.
for i, row in df.iterrows():
listy = 0
school = []
if row['LS_Type'] == 'Primary (1-4)':
a = row['Northing']
b = row['Easting']
LS_ID = row['LS_ID']
for j, row2 in df.iterrows():
if row2['LS_Type'] == 'Primary (1-8)':
dist_km = distance(a,b, df.Northing[j], df.Easting[j])
if (listy == 0):
listy = dist_km
school.append([df.LS_Name[j], df.LS_ID[j]])
else:
if dist_km < listy:
listy = dist_km
school[0] = [df.LS_Name[j], int(df.LS_ID[j])]
df['dist_up_prim'][i] = listy
df["closest_up_prim"][i] = school[0]
else:
df['dist_up_prim'][i] = 0