Disons que j'ai pandas
DataFrame
suivant:
import pandas as pd
df = pd.DataFrame({"A":[1,pd.np.nan,2], "B":[5,6,0]})
Qui ressemblerait à:
>>> df
A B
0 1.0 5
1 NaN 6
2 2.0 0
Je connais un moyen de vérifier si une valeur particulière est NaN
, qui est la suivante:
>>> df.isnull().ix[1,0]
True
Je pensais que l'option ci-dessous, en utilisant ix
, fonctionnerait aussi bien, mais ce n'est pas:
>>> df.ix[1,0]==pd.np.nan
False
J'ai aussi essayé iloc
avec les mêmes résultats:
>>> df.iloc[1,0]==pd.np.nan
False
Cependant, si je vérifie ces valeurs en utilisant ix
ou iloc
, je reçois:
>>> df.ix[1,0]
nan
>>> df.iloc[1,0]
nan
Alors, pourquoi la deuxième option ne fonctionne-t-elle pas? Est-il possible de vérifier les valeurs NaN
à l'aide de ix
ou iloc
?
Essaye ça:
In [107]: pd.isnull(df.iloc[1,0])
Out[107]: True
La réponse ci-dessus est excellente. Voici la même chose avec un exemple pour une meilleure compréhension.
>>> import pandas as pd
>>>
>>> import numpy as np
>>>
>>> pd.Series([np.nan, 34, 56])
0 NaN
1 34.0
2 56.0
dtype: float64
>>>
>>> s = pd.Series([np.nan, 34, 56])
>>> pd.isnull(s[0])
True
>>>
J'ai aussi essayé plusieurs fois, les essais suivants n'ont pas fonctionné. Merci à @MaxU
.
>>> s[0]
nan
>>>
>>> s[0] == np.nan
False
>>>
>>> s[0] is np.nan
False
>>>
>>> s[0] == 'nan'
False
>>>
>>> s[0] == pd.np.nan
False
>>>