2016-11-08 1 views
-1

J'utilise un ordinateur portable Jupyter. Le noyau python par défaut. 'numpy' et 'pandas' importés.pd.to_numeric ne fonctionne pas en python

Cette colonne est appelée 'Période'. La valeur contient des nombres et du texte comme "Période". Le type de données est 'objet'. Je voudrais supprimer les lignes dans lesquelles la valeur de la colonne «Période» n'est pas un nombre. Ce que j'ai essayé de faire est de convertir d'abord la colonne de l'objet en numérique.

pd.to_numeric(df['Period'],errors='coerce') 

Il a retourné une liste de nombres et de NaN. La dernière ligne est:

Name: Period, dtype: float64 

Si j'ai vérifié à nouveau:

df['Period'].dtype 

Il retourne:

dtype('O') 

Apparemment, la conversion ne fonctionne pas vraiment. Aussi avec le code suivant, il n'a rien perdu.

df.dropna(subset=['Period']) 

Selon vous, que s'est-il passé?

Répondre

1

Les opérations Pandas telles que to_numeric ne fonctionnent pas "in-situ" par défaut. Je vous recommande d'assigner le résultat à une colonne dans votre dataframe.

df['Period_numbers'] = pd.to_numeric(df['Period'], errors='coerce')

va de même avec dropna.

Dans la plupart des cas, vous pouvez transmettre inplace=True à la méthode ou à la fonction. Mais je recommande vraiment d'assigner les résultats à la place.

0

variante:

df[df['Period'].str.isnumeric()] 
+0

ValueError: ne peut pas indexer avec le vecteur contenant les valeurs NA/NaN – retirer