Присоединение (конкат) списка аналогичных фреймов данных в геопандах?

15

У меня есть список данных, все они имеют одинаковую структуру и являются полигонами.

Как я могу сложить их все вместе, используя геопанды?

Philipp_Kats
источник

Ответы:

28

кажется, что это правильный способ сделать это прямо сейчас:

rdf = gpd.GeoDataFrame( pd.concat( dataframesList, ignore_index=True) )
Philipp_Kats
источник
8
Великий ответ, одно улучшение: rdf = gpd.GeoDataFrame(pd.concat(dataframesList, ignore_index=True), crs=dataframesList[0].crs). Теперь новый фрейм данных будет иметь тот же CRS, что и один из начальных фреймов данных. Из-за использования pandas.concatлюбых географических метаданных, таких как CRS, не сохраняется по умолчанию.
AleksMat
Это работает хорошо - спасибо. Я обнаружил, что приложение может сбиться с пути, например, когда у одного файла есть «имя», а у другого - «Имя», у меня ничего не получилось ни в одном столбце для строк из одного файла. Я не смог воспроизвести его надежно, поэтому в итоге заставил имена столбцов в нижнем регистре упростить разбиение столбцов, что кажется надежным.
Майк Хони
14

Я только что поэкспериментировал с этим - возможно, в GeoPandas 0.2.1 и Pandas 0.20.3 это немного более кратко:

gdf = pd.concat([gdf1, gdf2])

gdf автоматически создается как GeoDataFrame. Конечно, если есть вероятность противоречивых индексов, вы должны оставить параметр ignore_index = True.

Чарли Парр
источник
3
Я только что попробовал это, и я могу подтвердить, что это не работает (используя pandas_0.20.3 геопанду_0.3.0). Результатом является DataFrame, а не GeoDataFrame. Например, если вы попытаетесь использовать, gdf1.to_file(xxx, driver='ESRI Shapefile')вы получите ошибку, которая говорит'DataFrame' object has no attribute 'to_file'
jberrio
@jberrio спасибо за обновление! похоже, что обновление GeoPandas сделало вещи более явными.
Чарли Парр
1
Если вы отметили, что модераторы попросили модераторов снять галочку «Принять», учтите, что это невозможно. В качестве обходного пути от meta.stackexchange.com/a/187263/215590 я попытался удалить ответ, но ответчик попросил его восстановить. Долгосрочное решение для работы с принятыми ответами, которые могут больше не быть правильными, было предложено на meta.stackexchange.com/questions/268666/…
PolyGeo
У меня это работало нормально с версией панд: 0.24.2 и версией геопандаса:
0.5.0