Comment puis-je remplacer toutes les valeurs NaN avec Zero dans une colonne d'un dataframe pandas
J'ai un dataframe comme ci-dessous
itm Date Amount
67 420 2012-09-30 00:00:00 65211
68 421 2012-09-09 00:00:00 29424
69 421 2012-09-16 00:00:00 29877
70 421 2012-09-23 00:00:00 30990
71 421 2012-09-30 00:00:00 61303
72 485 2012-09-09 00:00:00 71781
73 485 2012-09-16 00:00:00 NaN
74 485 2012-09-23 00:00:00 11072
75 485 2012-09-30 00:00:00 113702
76 489 2012-09-09 00:00:00 64731
77 489 2012-09-16 00:00:00 NaN
lorsque j'essaie d' .appliquer une fonction à la colonne Montant, j'obtiens l'erreur suivante.
ValueError: cannot convert float NaN to integer
J'ai essayé l'application d'une fonction à l'aide .isnan à partir du Module Math
J'ai essayé les pandas .remplacer l'attribut
J'ai essayé le .le peu de données de l'attribut de pandas de 0,9
J'ai aussi essayé si NaN == NaN déclaration d'une fonction.
J'ai aussi regardé cet article Comment puis-je la remplacer NA valeurs avec des zéros dans un R dataframe? tout en regardant certains autres articles.
Toutes les méthodes que j'ai essayé n'ont pas travaillé ou ne reconnaissent pas NaN.
Tous Conseils ou des solutions serait appréciée.
- Le seul problème est df.de remplissage.na() ne fonctionne pas si le bloc de données à laquelle vous postulez, il est rééchantillonné ou ont été tranchés par le biais de loc fonction
Vous devez vous connecter pour publier un commentaire.
Je crois
DataFrame.fillna()
le fera pour vous.Lien vers les Docs pour un dataframe et pour une Série.
Exemple:
Pour remplir les NaNs dans une seule colonne, sélectionnez la colonne. dans ce cas, je suis sur place=True pour modifier le contenu de df.
df[1]
est un point de vue plutôt qu'une copie de l'original DF? De toute évidence, si il y a une situation rare où c'est une copie, il serait la cause d'une super-pénible bug. Est-il un énoncé clair sur que dans les pandas de la documentation?Il n'est pas garanti que le découpage renvoie une vue ou d'une copie. Vous pouvez faire
Vous pouvez utiliser
remplacer
de changerNaN
à0
:J'ai juste voulu donner un peu d'une mise à jour/cas particulier, car il est comme les gens continuent de venir ici. Si vous êtes en utilisant un multi-indice ou autrement, à l'aide d'un indice-trancheuse à la place=True option peut ne pas être suffisant pour mettre à jour la tranche que vous avez choisi. Par exemple, dans une 2x2 niveau multi-indice de cette volonté de ne pas modifier les valeurs (comme des pandas 0.15):
Le "problème" est que l'enchaînement des sauts de la fillna capacité de mise à jour de l'original dataframe. J'ai mis "problème" entre guillemets car il y a de bonnes raisons pour les décisions de conception qui a conduit à ne pas interpréter par ces chaînes dans certaines situations. Aussi, c'est un exemple complexe (même si j'ai vraiment couru en elle), mais la même chose peut s'appliquer à moins de niveaux des indices en fonction de comment vous le trancher.
La solution est DataFrame.mise à jour:
C'est une ligne, se lit assez bien (en quelque sorte) et élimine inutile de jouer avec des variables intermédiaires ou des boucles tout en vous permettant d'appliquer des fillna pour tout multi-niveau de la tranche que vous le souhaitez!
Si quelqu'un peut trouver des endroits cela ne fonctionne pas, merci de poster dans les commentaires, je me suis amusé avec elle et en regardant la source et il semble pour résoudre au moins mon multi-indice tranche de problèmes.
Le code ci-dessous a fonctionné pour moi.
Moyen facile de combler les valeurs manquantes:-
remplissage les colonnes de la chaîne: lorsque les colonnes de la chaîne ont des valeurs manquantes et des valeurs NaN.
remplissage colonnes numériques: lorsque les colonnes numériques ont des valeurs manquantes et des valeurs NaN.
remplissage NaN avec zéro:
Compte tenu de la colonne particulière
Amount
dans le tableau ci-dessus est de type entier. Voici une solution :De même, vous pouvez le remplir avec différents types de données comme les
float
,str
et ainsi de suite.En particulier, je considère le type de données à comparer les différentes valeurs de la même colonne.
Pour remplacer na des valeurs dans les pandas
si
inplace = False
, au lieu de la mise à jour de la df (dataframe), elle retournera les valeurs modifiées.Si vous étiez à la convertir en une pandas dataframe, vous pouvez également accomplir cela en utilisant
fillna
.Ce sera le retour de la suivante:
Vous pouvez également utiliser les dictionnaires pour remplir NaN valeurs des colonnes spécifiques dans le DataFrame plutôt à remplir tous les DF avec certains oneValue.