Une façon serait d'utiliser df.index.isnull()
pour identifier l'emplacement du NaN:
In [218]: df = pd.DataFrame({'Date': [0, 1, 2, 0, 1, 2], 'Name': ['A', 'B', 'C', 'A', 'B', 'C'], 'val': [0, 1, 2, 3, 4, 5]}, index=['DC', np.nan, 'BS', 'AB', 'OA', np.nan]); df
Out[218]:
Date Name val
DC 0 A 0
NaN 1 B 1
BS 2 C 2
AB 0 A 3
OA 1 B 4
NaN 2 C 5
In [219]: df.index.isnull()
Out[219]: array([False, True, False, False, False, True], dtype=bool)
Ensuite, vous pouvez sélectionner ces lignes à l'aide df.loc
:
In [220]: df.loc[df.index.isnull()]
Out[220]:
Date Name val
NaN 1 B 1
NaN 2 C 5
Note: Ma réponse originale utilisé pd.isnull(df.index)
au lieu de Zero's suggestion, df.index.isnull()
. Il est préférable d'utiliser df.index.isnull()
car pour les types d'index qui ne peuvent pas contenir de NaN, tels que Int64Index
et RangeIndex
, la méthode isnull
returns an array of all False values immediately au lieu de vérifier sans réfléchir chaque élément de l'index pour les valeurs NaN.
en général il est fortement déconseillé d'utiliser nan dans un index - si vous avez plus de 1 nan votre index n'est pas unique et donc beaucoup d'ops sont beaucoup moins efficaces et compliqués – Jeff