Ich habe eine CSV-Datei, die Stadt enthält, Breiten- und Längendaten in das unten stehenden Format:euklidische Entfernung Matrix unter Verwendung von Pandas
CITY|LATITUDE|LONGITUDE
A|40.745392|-73.978364
B|42.562786|-114.460503
C|37.227928|-77.401924
D|41.245708|-75.881241
E|41.308273|-72.927887
Ich brauche eine Distanzmatrix im folgende Format erstellen (ignorieren Sie den Dummy Werte):
A B C D E
A 0.000000 6.000000 5.744563 6.082763 5.656854
B 6.000000 0.000000 6.082763 5.385165 5.477226
C 1.744563 6.082763 0.000000 6.000000 5.385165
D 6.082763 5.385165 6.000000 0.000000 5.385165
E 5.656854 5.477226 5.385165 5.385165 0.000000
I, die Daten in einem Datenrahmen pandas geladen haben und haben einen Quer verbinden, wie unten erstellt:
import pandas as pd
df_A = pd.read_csv('lat_lon.csv', delimiter='|', encoding="utf-8-sig")
df_B = df_A
df_A['key'] = 1
df_B['key'] = 1
df_C = pd.merge(df_A, df_B, on='key')
- Können Sie mir bitte helfen, die obige Matrixstruktur zu erstellen?
- Ist es auch möglich, Schritte zu vermeiden, die Cross-Join beinhalten?
Haben Sie den Algorithmus haben den euklidischen Abstand zu berechnen? – StefanS
Mögliches Duplikat von [Entfernungsmatrix für Zeilen im Pandas-Datenrahmen] (http://stackoverflow.com/questions/29723560/distance-matrix-for-rows-in-pandas-dataframe) – IanS
@IanS, IMO, es ist nicht ganz dasselbe Frage (und die angegebene Antwort für die euklidische Distanz ist nicht die schnellste - wie sie die 'apply'-Methode verwendet) – MaxU