How to filter in NaN (pandas)?

Gerhard picture Gerhard · Jul 31, 2014 · Viewed 117.6k times · Source

I have a pandas dataframe (df), and I want to do something like:

newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]

I've tried replacing NaN with np.NaN, or 'NaN' or 'nan' etc, but nothing evaluates to True. There's no pd.NaN.

I can use df.fillna(np.nan) before evaluating the above expression but that feels hackish and I wonder if it will interfere with other pandas operations that rely on being able to identify pandas-format NaN's later.

I get the feeling there should be an easy answer to this question, but somehow it has eluded me. Any advice is appreciated. Thank you.

Answer

Mark Whitfield picture Mark Whitfield · Jul 31, 2014

This doesn't work because NaN isn't equal to anything, including NaN. Use pd.isnull(df.var2) instead.