Это кажется довольно простым вопросом, но я не могу понять, как преобразовать DataFrame pandas в GeoDataFrame для пространственного объединения.
Вот пример того, как выглядят мои данные 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
На самом деле, этот фрейм данных был создан из CSV, так что, если проще воспринимать CSV непосредственно как GeoDataFrame, это тоже хорошо.
Ответы:
Преобразовать содержимое DataFrame (например
Lat
иLon
столбцы) в соответствующие стройных геометрии первым , а затем использовать их вместе с оригинальным DataFrame создать GeoDataFrame.Результат:
Поскольку геометрии часто бывают в формате WKT, я подумал, что я бы также включил пример для этого случая:
источник
Однострочники! Плюс несколько указателей производительности для людей с большими данными.
Учитывая,
pandas.DataFrame
что имеет х Долгота и у Широта, как это:Давайте конвертируем
pandas.DataFrame
в ageopandas.GeoDataFrame
следующим образом:Импорт библиотек и ускорения :
Код + время тестирования на наборе тестовых данных, которые у меня есть:
Использование
pandas.apply
на удивление медленнее, но может лучше подходить для некоторых других рабочих процессов (например, для больших наборов данных, использующих библиотеку dask):Кредиты для:
Некоторые ссылки на Work-In-Progress (по состоянию на 2017 год) для обработки больших
dask
наборов данных:источник