У меня есть набор данных, в котором есть GPS-координаты школ по уровням начальной и средней школы.Чтобы выяснить, где строить новые школы, мне нужно рассчитать расстояние между каждой младшей начальной школой до старшей начальной школы и расстояние между старшей начальной школой до ближайшей средней школы.
Я использую Python имог бы посоветовать, как лучше всего сделать этот расчет.Выходные данные должны добавить два двух дополнительных столбца в CSV.1) должен указать ближайшую среднюю школу и 2) должен указать расстояние в км до этой средней школы.
У меня есть функция расстояния, которая работает, но у меня возникают проблемы при сравнении расстояния одной конкретной строки свсе остальные указанные строки, например, сравнение расстояния одной нижней первичной строки 1-4 со всеми остальными первичными 1-8 строками и сохранение выходных данных в новом столбце.
Цените любые советы здесь.
Спасибо
Изображение набора данных CSV
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