В начале решения вам нужно установить geopy, чтобы упростить вычисление расстояния: я предполагаю, что id - это идентификатор местоположения, и я вычисляю все расстояния (км) между всеми местоположениями. Id
from geopy.distance import lonlat,distance
df= pd.DataFrame({'id': [2236, 3432, 3433, 3434, 3567, 3568, 3569, 3570, 3571, 3572],
'lon': [51.471899, 51.461456, 51.454544, 51.471934, 51.441648, 51.398149, 51.467318, 51.467257, 51.4682, 51.443477],
'lat': [5.471339, 5.486195, 5.487742, 5.471232, 5.464492, 5.478717, 5.470221, 5.478014, 5.477699, 5.47239]})
df_all = pd.merge(df.assign(key=0), df.assign(key=0),suffixes=('', '_loc') , on='key').drop('key', axis=1)
df_all['KM'] = df_all.apply(
(lambda row:distance(lonlat(row['lon'], row['lat']),lonlat(row['lon_loc'], row['lat_loc'])).km), axis=1)
print(df_all)
:
id lon lat id_loc lon_loc lat_loc KM
0 2236 51.471899 5.471339 2236 51.471899 5.471339 0.000000
1 2236 51.471899 5.471339 3432 51.461456 5.486195 2.009507
2 2236 51.471899 5.471339 3433 51.454544 5.487742 2.643655
3 2236 51.471899 5.471339 3434 51.471934 5.471232 0.012452
:
10 3432 51.461456 5.486195 2236 51.471899 5.471339 2.009507
11 3432 51.461456 5.486195 3432 51.461456 5.486195 0.000000
12 3432 51.461456 5.486195 3433 51.454544 5.487742 0.784811
:
70 3570 51.467257 5.478014 2236 51.471899 5.471339 0.899710
71 3570 51.467257 5.478014 3432 51.461456 5.486195 1.109818
:
98 3572 51.443477 5.472390 3571 51.468200 5.477699 2.801878
99 3572 51.443477 5.472390 3572 51.443477 5.472390 0.000000
(100 rows)
надеюсь, что это может помочь и извините за мой плохой английский