Dies scheint eine recht einfache Frage zu sein, aber ich kann nicht herausfinden, wie ein Pandas-DataFrame für eine räumliche Verknüpfung in einen GeoDataFrame konvertiert wird.
Hier ist ein Beispiel für die Verwendung meiner Daten df.head()
:
Date/Time Lat Lon ID
0 4/1/2014 0:11:00 40.7690 -73.9549 140
1 4/1/2014 0:17:00 40.7267 -74.0345 NaN
Tatsächlich wurde dieser Datenframe aus einer CSV erstellt. Wenn es also einfacher ist, die CSV direkt als GeoDataFrame einzulesen, ist dies auch in Ordnung.
Antworten:
Konvertieren Sie zuerst den Inhalt des DataFrames (z. B.
Lat
und dieLon
Spalten) in die entsprechenden Shapely- Geometrien und verwenden Sie sie dann zusammen mit dem ursprünglichen DataFrame, um einen GeoDataFrame zu erstellen.Ergebnis:
Da die Geometrien häufig im WKT-Format vorliegen, dachte ich, ich würde auch ein Beispiel für diesen Fall hinzufügen:
quelle
Einzeiler! Plus einige Leistungsindikatoren für Big-Data-Mitarbeiter.
Bei a
pandas.DataFrame
mit x Längen- und y Breitengrad wie folgt:Lassen Sie uns das konvertieren
pandas.DataFrame
in eingeopandas.GeoDataFrame
wie folgt:Bibliotheksimporte und formschöne Beschleunigung :
Code + Benchmark-Zeiten auf einem Testdatensatz, den ich rumliegen habe:
Die Verwendung
pandas.apply
ist überraschend langsam, passt jedoch möglicherweise besser zu einigen anderen Workflows (z. B. bei größeren Datensätzen mit der Dask-Bibliothek):Anerkennung an:
Einige Work-In-Progress-Referenzen (Stand 2017) zum Umgang mit großen
dask
Datenmengen:quelle