In reference to @jreback 's answer on this related issue, it seems a bit counter-intuitive for me that np.nan evaluates to True while None does not.

In[1]: not np.nan
Out[1]: False
In[2]: not None
Out[2]: True

This proved to be a source of trouble in some of my code, as building a dataframe object using inputs containing None turns them into np.nan which means they go from evaluating to False, to evaluating to True. How does this not prevent np.nan from being the representation of None?

Comment From: jreback

see the documentation here: http://pandas.pydata.org/pandas-docs/stable/missing_data.html#values-considered-missing