Comment parcourir les lignes d'un dataframe et de vérifier si la valeur dans une colonne de la ligne est NaN
J'ai une question de débutant. J'ai un dataframe je suis à parcourir et je veux vérifier si une valeur de colonne2 ligne est NaN
ou non, d'effectuer une action sur cette valeur si elle n'est pas NaN
. Mon DataFrame ressemble à ceci:
df:
Column1 Column2
0 a hey
1 b NaN
2 c up
Ce que je suis en train d'essayer à l'instant est:
for item, frame in df['Column2'].iteritems():
if frame.notnull() == True:
print 'frame'
La pensée derrière tout cela est que je itérer sur les lignes de la colonne 2 et print
image pour chaque ligne a une valeur (qui est une chaîne). Ce que je reçois à est cependant ceci:
AttributeError Traceback (most recent call last)
<ipython-input-80-8b871a452417> in <module>()
1 for item, frame in df['Column2'].iteritems():
----> 2 if frame.notnull() == True:
3 print 'frame'
AttributeError: 'float' object has no attribute 'notnull'
Lorsque je lance la première ligne de mon code, j'obtiens
0
hey
1
nan
2
up
qui suggère que les flotteurs dans la sortie de la première ligne sont la cause de l'erreur. Quelqu'un peut-il me dire comment je peux faire ce que je veux?
OriginalL'auteur sequence_hard | 2015-10-14
Vous devez vous connecter pour publier un commentaire.
Que vous comprenez déjà ,
frame
dansest chaque
row
dans la Colonne, son type est le type des éléments de la colonne (qui ne seront très probablement pasSeries
ouDataFrame
). Par conséquent,frame.notnull()
sur cela ne fonctionnerait pas.Vous devriez plutôt essayer -
nan
valeurs sont toujours présents.. Mais pourquoi l'image des valeurs de flotteurs quand ils doivent être des chaînes de caractères?Les Pandas représente l'ensemble des valeurs manquantes comme le nombre à virgule flottante
nan
Vous pouvez utiliser
pd.notnull()
pour vérifier si la valeur n'est pasNaN
. Si vous souhaitez également filtrer les cordes à vide/ Pas de valeurs, vous pouvez également le faire -if frame and pd.notnull(frame):
.Ok, cela fonctionne. Je pense que j'ai appelé .notnull() mal quand j'ai essayé avant. Merci beaucoup!
OriginalL'auteur Anand S Kumar
À l'aide de
iteritems
sur une Série (qui est ce que vous obtenez lorsque vous prenez une colonne à partir d'un DataFrame) itère sur les paires (index, valeur). Si votreitem
va prendre les valeurs 0, 1 et 2 dans les trois itérations de la boucle, et votreframe
prendra les valeurs'hey'
,NaN
, et'up'
(donc la "trame" est probablement un mauvais nom). L'erreur vient d'essayer d'utiliser la méthodenotnull
surNaN
(qui est représenté comme un nombre à virgule flottante).Vous pouvez utiliser la fonction
pd.notnull
à la place:Un autre moyen serait d'utiliser
notnull
sur l'ensemble de la Série, et ensuite effectuer une itération sur les valeurs (qui sont maintenant boolean):OriginalL'auteur Evan Wright
essayez ceci:
Le code ci-dessus vous donnera les données pour lesquelles
Column2
n'a pas de valeur nullOriginalL'auteur Hackaholic