Esta parece una pregunta bastante simple, pero no puedo entender cómo convertir un DataFrame de pandas en un GeoDataFrame para una unión espacial.
Aquí hay un ejemplo de cómo se ven mis datos usando 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
De hecho, este marco de datos se creó a partir de un CSV, por lo que si es más fácil leer el CSV directamente como un GeoDataFrame, también está bien.
Respuestas:
Convierta el contenido del DataFrame (p. Ej.
Lat
YLon
columnas) primero en geometrías Shapely apropiadas y luego úselas junto con el DataFrame original para crear un GeoDataFrame.Resultado:
Como las geometrías a menudo vienen en formato WKT, pensé que también incluiría un ejemplo para ese caso:
fuente
One-liners! Además de algunos indicadores de rendimiento para personas de big data.
Dado un
pandas.DataFrame
que tiene x Longitud e Latitud y así:Convirtamos el
pandas.DataFrame
a de lageopandas.GeoDataFrame
siguiente manera:Importaciones de biblioteca y aceleraciones bien proporcionadas :
Código + tiempos de referencia en un conjunto de datos de prueba que tengo por ahí:
El uso
pandas.apply
es sorprendentemente más lento, pero puede ser mejor para algunos otros flujos de trabajo (por ejemplo, en conjuntos de datos más grandes que usan la biblioteca dask):Créditos para:
Algunas referencias de Work-In-Progress (a partir de 2017) para manejar grandes
dask
conjuntos de datos:fuente