2017-09-05 4 views
1

J'ai un peu de mal à extraire un seul point d'un GeoDataFrame dans pandas/geopandas.Maintien de la géostructure lors de l'indexation d'une image géographique

En fait, si j'utilise un index unique (en utilisant iloc ou ix) la fonction retourne un fichier pd.Series, et je perds donc tous les attributs et méthodes. C'est ce dont je parle:

>>> type(OMS) 
<class 'geopandas.geodataframe.GeoDataFrame'> 
>>> type(OMS.iloc[2:3]) 
<class 'geopandas.geodataframe.GeoDataFrame'> 
>>> type(OMS.iloc[2]) 
<class 'pandas.core.series.Series'> 

Y at-il un moyen d'extraire efficacement une géométrie sans changer la structure/type de données?

En particulier, j'ai besoin d'appliquer la méthode du tampon (qui existe à la fois dans les classes GeoDataFrame et GeoSeries) sur ce point extrait.

Merci!

+1

'OMS.iloc [2: 3]' 'ou OMS.iloc [[2]]' –

Répondre

0

Utilisez des crochets doubles:

OMS.iloc[[2]] 
+0

qui fonctionne! Merci! Bien que je ne puisse pas comprendre comment ... pourquoi forcer l'index à être une liste, et donc l'iloc/ix retourne un GeoDataFrame (entrées multiples vs une seule entrée)? –

+0

Lorsque vous sélectionnez une seule colonne à partir d'une base de données, Pandas transforme automatiquement le retour en série. Donc, autour est à une seule colonne dans une liste et Pandas conserve le DataFrame. Ou vous pouvez découper vos colonnes en utilisant 2: 3. Ou vous pouvez faire OMS.iloc [2] .to_frame(). –