web-dev-qa-db-fra.com

Supprimer des éléments de la série pandas dans python

J'ai un type de données série qui a été généré en soustrayant deux colonnes de la trame de données pandas.

Je veux supprimer le premier élément de la série qui serait x[-1] dans R. Je peux le faire fonctionner dans la classe tableau np mais la classe série ne fonctionne pas.

13
jay2020

Utiliser le découpage basé sur integer devrait fonctionner --- (voir documentation ):

s.iloc[1:]

Si vous préférez drop plutôt que slice, vous pouvez utiliser la méthode intégrée drop:

s.drop(s.index[0])

Pour supprimer plusieurs éléments, vous devez inclure un list de index positions:

s.drop(s.index[[0, 2, 4]])

ou un slice:

s.drop(s.index[1: 4])
19
Stefan

Python n'a pas de moyen de découper une position comme le fait R. Si vous avez seulement besoin de supprimer le premier ou le dernier élément, la solution publiée précédente: s.iloc[1:] est probablement le meilleur. Si vous devez supprimer plusieurs éléments ou un élément au milieu de votre série, vous pouvez le faire avec les éléments suivants:

In [29]: x = pd.Series(np.random.randn(10))

In [34]: x[~x.index.isin([0, 3, 4])]
Out[34]: 1    0.884089
         2    0.921271
         5   -0.847967
         6   -0.088892
         7   -0.765241
         8   -0.084489
         9   -0.581152
         dtype: float64

Dans ce cas, nous avons supprimé les positions 0, 3 et 4.

C'est un peu plus compliqué, donc comme je l'ai dit, la solution précédente peut être la meilleure pour ce dont vous avez besoin, mais cela a des fonctionnalités supplémentaires.

Il est à noter que cette solution ne fonctionnera que si votre index est numérique et consécutif commençant par 0.

1
johnchase