为什么" np.NaN"的数据类型为什么?属于numpy.float64?

时间:2018-02-21 12:51:03

标签: pandas

我创建了一个填充了np.nan的单个columen数据框,如下所示:

df=pd.DataFrame([np.nan]*5)

    0
0 NaN
1 NaN
2 NaN
3 NaN
4 NaN

当我尝试查找df.iloc[0,0]的数据类型,即NaN时,该值返回numpy.float64

我知道pd.isnull函数可以正确地为这些np.NaN返回true。但是,我不明白为什么数据类型是浮点数?

2 个答案:

答案 0 :(得分:1)

数字数组中的NaN

>>> a = float('inf')
>>> b = float('-inf')
>>> c = float('nan')
>>> a
inf
>>> b
-inf
>>> c
nan

NaN值在所有操作中传播,不会引发异常。例如:

>>> c = float('nan')
>>> c + 23
nan
>>> c / 2
nan
>>> c * 2
nan
>>> math.sqrt(c)
nan
>>>

如果它是浮点类型,它会在计算过程中帮助Python。

答案 1 :(得分:1)

NumPy(np)使用IEEE Standard Binary Floating-Point进行算术运算(IEEE 754)。这就是为什么当您使用NumPy进行任何类型的操作时,它将返回Float

>>> type(np.nan*5)
<class 'float'>