У меня есть два столбца в файле CSV, которые я импортировал в фреймворк pandas. Первый столбец - это широта, а Второй столбец - долгота. Для каждой широты и долготы я хочу найти расстояние между всеми другими координатами в столбце и вернуть местоположение наименьшего расстояния.
import pandas as pd
import numpy as np
import geopy.distance
from math import sin,cos,sqrt,atan2,radians
df=pd.read_csv('coordinates.csv')
R=6373.0
df['coords']=list(zip(df['lat'],df['long'])
df['coords2']=list(zip(df['lat'],df['long'])
Итак, для каждой координаты я хочу иметь возможность найти наименьшую координату среди всех остальных в списке, но мой цикл for ниже просто дает длинный список расстояний без отслеживания местоположения.
У меня есть функция расстояния, которая принимает 2 балла:
def distance (p1, p2):
return (geopy.distance.vincenty(p1,p2).km)
dist=[]
for i in range(0,len(df.coords)):
for j in range(0,len(df.coords2)):
if df.coords[i] != df.coords2[j]:
x=distance2(df.coords[i],df.coords2[j])
dist.append(df.coords[i], x)
Образец данных:
location lat long
0 34.159525 -82.381883
1 33.57112 -81.761782
2 32.965361 -81.248054
3 34.511574 -82.646487
Требуемый результат:
location lat long closest_distance
0 34.159525 -82.381883 2
1 33.57112 -81.761782 3
2 32.965361 -81.248054 3
3 34.511574 -82.646487 0
for
перебор? Зависит от размера файлов. - person Sqoshu   schedule 19.02.2018