0
votes

Pandas Hasnans renvoie une valeur erronée pour la colonne contenant des valeurs NaR

J'ai un Dataframe avec env. 200 colonnes, 7000 rangées. Colonne B code> est composé de valeurs entièrement nan code>, à l'exception d'environ 400 lignes au milieu.

En somme, la colonne B ressemble à ceci (condensé pour la brièveté): p> xxx pré>

Cependant, lorsque j'écris du code comme suit, l'attribut hasnans code> semble avoir la mauvaise valeur. Suis-je à l'aide de l'attribut incorrectement ou quelque chose? P>

"  DATE       TIME  ","  A  ","  C  ","  B  "
12/11/2018 15:44:36,     5448,     0.00,      NaN
12/11/2018 15:44:36,     5448,     0.00,      NaN
12/11/2018 15:44:36,     5448,     0.00,      NaN
12/11/2018 15:44:36,     5448,     0.00,      NaN
12/11/2018 15:45:07,     5448,     0.00,      NaN
12/11/2018 15:45:08,     5448,     0.00,      NaN
12/11/2018 15:45:08,     5448,     0.00,      NaN
12/11/2018 15:45:09,     5448,     0.00,      NaN
12/11/2018 15:45:09,     5448,     0.00,      NaN


3 commentaires

J'ai copié et collé votre DF et votre code exact et que je suis retourné vrai. Dans votre cas, ils sont probablement des naines comme des cordes. Changez le dtype en int et réessayez.


Je pense que vous voulez dire changer DTYPE vers float


Oui je l'ai fait, changez le dtype vers float et réessayez, merci


3 Réponses :


0
votes

À mon avis, sa valeur false parce que "nan" code> la valeur de votre colonne est "nan" code> pas np.nan code> Le type de données pourrait être «objet», je suppose. Vous devez donc convertir ce "nan" code> dans np.nan code> de sorte que l'objet de la colonne soit INT ou float comme vous le souhaitez et que les hasnans renvoient la valeur booléenne correcte.

SO PREMIER, P>

df[df["B"] == "NaN"] = np.nan #it will convert "NaN" values into np.nan


0 commentaires

1
votes

Considérant xxx

comme fichier .csv que vous importait comme Pandas Dataframe, vous devez prendre en charge les valeurs réelles que vous recherchez.

En fait: xxx

retourne: xxx


1 commentaires

Votre solution a bien fonctionné, sauf dans des cas avec un nombre différent d'espaces. Je l'ai généralisé à une regex de \ snan et définissez le drapeau de regex et cela a fonctionné comme prévu.



1
votes

Lorsque vous avez lu votre CSV dans, vous devez utiliser l'option SkiCinitialSpace pour supprimer le principal espace de contrôle de vos données. Notez que, étant donné que les noms de colonne sont entre guillemets, les espaces bloqués resteront xxx

voir les docs ici


1 commentaires

Votre réponse a donné le correctif le plus concis, vous obtenez donc la coche.