Bergabung dengan (concat) daftar kerangka data serupa di geopanda?

15

Saya memiliki daftar dataframe, semua struktur yang sama dan semua adalah poligon.

Bagaimana saya bisa menambahkan mereka semua menggunakan geopanda?

Philipp_Kats
sumber

Jawaban:

28

sepertinya ini adalah cara yang tepat untuk melakukannya sekarang:

rdf = gpd.GeoDataFrame( pd.concat( dataframesList, ignore_index=True) )
Philipp_Kats
sumber
8
Jawaban yang bagus, salah satu perbaikan: rdf = gpd.GeoDataFrame(pd.concat(dataframesList, ignore_index=True), crs=dataframesList[0].crs). Sekarang kerangka data baru juga akan memiliki CRS yang sama dengan salah satu kerangka data awal. Karena menggunakan pandas.concatmetadata geografis apa pun seperti CRS tidak dapat dipertahankan secara default.
AleksMat
Ini bekerja dengan baik - terima kasih. Saya menemukan append dapat tersesat misalnya ketika satu file memiliki "nama" dan yang lain memiliki "Nama", saya berakhir dengan tidak ada di kolom mana pun untuk baris dari satu file. Saya tidak dapat mereproduksi dengan andal jadi saya akhirnya memaksa nama kolom untuk huruf kecil untuk menyederhanakan penumbukan kolom, yang tampaknya dapat diandalkan.
Mike Honey
13

Saya baru saja bereksperimen dengan ini - mungkin di GeoPandas 0.2.1 dan Pandas 0.20.3 sedikit lebih ringkas:

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

gdf secara otomatis dibuat sebagai GeoDataFrame. Tentu saja jika ada kemungkinan indeks yang bertentangan, Anda ingin mempertahankan parameter 'ign_index = True'.

Charlie Parr
sumber
3
Saya baru saja mencoba ini dan saya dapat mengonfirmasi itu tidak berfungsi (menggunakan pandas_0.20.3 geopandas_0.3.0). Hasilnya adalah DataFrame, bukan GeoDataFrame. Misalnya jika Anda mencoba menggunakan gdf1.to_file(xxx, driver='ESRI Shapefile')Anda akan mendapatkan kesalahan yang mengatakan'DataFrame' object has no attribute 'to_file'
jberrio
@ jberrio terima kasih atas pembaruannya! Sepertinya pembaruan untuk GeoPandas membuat semuanya lebih eksplisit.
Charlie Parr
1
Untuk penanda yang meminta moderator menghapus tanda centang Terima, harap perhatikan bahwa ini tidak mungkin dilakukan. Sebagai solusi dari meta.stackexchange.com/a/187263/215590 saya mencoba menghapus jawabannya, tetapi penjawab meminta agar dihapus. Solusi jangka panjang untuk menangani jawaban yang diterima yang mungkin tidak lagi benar telah diajukan di meta.stackexchange.com/questions/268666/…
PolyGeo
Ini bekerja dengan baik untuk saya dengan versi panda: 0.24.2 dan versi geopanda: 0.5.0
denson