Rejoindre (concat) la liste de trames de données similaires dans les géopandas?

15

J'ai une liste de dataframes, tous de la même structure et tous sont des polygones.

Comment puis-je les ajouter tous ensemble à l'aide de géopandas?

Philipp_Kats
la source

Réponses:

28

il semble que ce soit la bonne façon de le faire dès maintenant:

rdf = gpd.GeoDataFrame( pd.concat( dataframesList, ignore_index=True) )
Philipp_Kats
la source
8
Grande réponse, une amélioration: rdf = gpd.GeoDataFrame(pd.concat(dataframesList, ignore_index=True), crs=dataframesList[0].crs). Désormais, les nouvelles trames de données auront également le même CRS que l'une des trames de données initiales. En raison de l'utilisation pandas.concatde métadonnées géographiques telles que CRS, elles ne sont pas conservées par défaut.
AleksMat
Cela fonctionne bien - merci. J'ai trouvé que l'appendice peut s'égarer, par exemple lorsqu'un fichier a "nom" et un autre a "Nom", je me suis retrouvé avec rien dans les deux colonnes pour les lignes d'un fichier. Je ne pouvais pas le reproduire de manière fiable, donc j'ai fini par forcer les noms de colonnes en minuscules pour simplifier le brassage des colonnes, ce qui semble fiable.
Mike Honey
13

Je viens d'expérimenter avec cela - peut-être dans GeoPandas 0.2.1 et Pandas 0.20.3 c'est un peu plus concis:

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

gdf est automatiquement créé en tant que GeoDataFrame. Bien sûr, s'il existe un risque d'indexation conflictuelle, vous souhaiterez conserver le paramètre 'ignore_index = True'.

Charlie Parr
la source
3
Je viens d'essayer cela et je peux confirmer que cela ne fonctionne pas (en utilisant pandas_0.20.3 geopandas_0.3.0). Le résultat est un DataFrame, pas un GeoDataFrame. Par exemple, si vous essayez d'utiliser, gdf1.to_file(xxx, driver='ESRI Shapefile')vous obtiendrez une erreur qui dit'DataFrame' object has no attribute 'to_file'
jberrio
@jberrio merci pour la mise à jour! on dirait que la mise à jour de GeoPandas a rendu les choses plus explicites.
Charlie Parr
1
Pour le signaleur qui a demandé aux modérateurs de supprimer la coche Accepter, sachez que cela n'est pas possible. Comme solution de contournement de meta.stackexchange.com/a/187263/215590, j'ai essayé de supprimer la réponse, mais le répondeur a demandé qu'elle soit supprimée. Une solution à long terme pour traiter les réponses acceptées qui peuvent ne plus être correctes a été proposée sur meta.stackexchange.com/questions/268666/…
PolyGeo
Cela a bien fonctionné pour moi avec la version pandas: 0.24.2 et la version géopandas: 0.5.0
denson