Baisse de NaNs à partir d'un dataFrame pandas
Je ne comprends pas comment NaN sont traités dans des pandas, serait heureux de l'obtenir quelques explications, parce que la logique semble "cassé" pour moi.
J'ai un fichier csv, ce qui im chargement à l'aide de lire un fichier csv. j'ai une colonne "commentaires" dans ce fichier, qui est vide la plupart du temps.
J'ai isolé cette colonne, et essayé varie façons de baisse des valeurs vides. tout d'abord, quand im écrit:
marked_results.comments
J'obtiens:
0 VP
1 VP
2 VP
3 TEST
4 NaN
5 NaN
....
Le reste de la colonne est NaN.
si les pandas chargement des entrées vides comme NaNs. très bien jusqu'à présent.
Maintenant im essayant de supprimer ces entrées. Iv essayé:
marked_results.comments.dropna()
et on a reçu la même colonne. rien n'a été abandonné. confus, j'avais essayé de comprendre pourquoi rien n'a été abandonné, donc j'ai essayé:
marked_results.comments==NaN
et on a reçu une série de Falses. Rien n'a été NaNs... déroutant.
ensuite, j'ai essayé:
marked_results.comments==nan
Et encore, mais rien de falses. Je me suis un peu énervé là, et la pensée d'être plus intelligent. j'ai donc fait:
In [71]:
comments_values = marked_results.comments.unique()
comments_values
Out[71]:
array(['VP', 'TEST', nan], dtype=object)
Ah, gotya! alors maintenant, j'ai essayé:
marked_results.comments==comments_values[2]
et étonnamment, tous les résultats sont Falses!!!
la seule chose qui a fonctionné a été:
marked_results.comments.isnull()
qui returnd le résultat souhaité. Quelqu'un peut-il a ce qui a happend ici??
OriginalL'auteur idoda | 2013-07-31
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
isnull
etnotnull
pour tester NaN (elles sont plus robustes à l'aide de pandas dtypes que numpy), voir "valeurs manquantes" dans les docs.À l'aide de la méthode de Série
dropna
sur une colonne n'affectera pas l'original dataframe, mais faire ce que vous voulez:La
dropna
DataFrame méthode a un sous-ensemble de l'argument (à déposer les lignes qui ont des NaNs dans des colonnes spécifiques):OriginalL'auteur Andy Hayden
Vous avez besoin de tester
NaN
avecmath.isnan()
fonction (Ounumpy.isnan
). NaNs ne peut pas être vérifiée avec l'opérateur d'égalité.Fonction d'aide ->
OriginalL'auteur Sukrit Kalra