您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-NaN和None有什么区别?

Python-NaN和None有什么区别?

在我看来,使用NaN(而不是None)的主要原因是它可以与numpy的float64 dtype一起存储,而不是效率较低的object dtype,请参阅NA type Promotions

#  without forcing dtype it changes None to NaN!
s_bad = pd.Series([1, None], dtype=object)
s_good = pd.Series([1, np.nan])

In [13]: s_bad.dtype
Out[13]: dtype('O')

In [14]: s_good.dtype
Out[14]: dtype('float64')

杰夫对此评论(如下):

np.nan允许向量化操作;它是一个float值,而None根据定义,它强制对象类型,这基本上禁用了numpy中的所有效率。

因此,快速重复3次:object ==badfloat == good

说,许多操作在None vs NaN上仍然可以正常工作(但可能不受支持,即有时可能会产生令人惊讶的结果):

In [15]: s_bad.sum()
Out[15]: 1

In [16]: s_good.sum()
Out[16]: 1.0

要回答第二个问题: 你应该使用pd.isnull并pd.notnull测试丢失的数据(NaN)。

python 2022/1/1 18:25:01 有163人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶