【问题标题】:Why does the data type of "np.NaN" belong to numpy.float64?为什么“np.NaN”的数据类型属于numpy.float64?
【发布时间】:2018-02-21 12:51:03
【问题描述】:

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

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。但是,我不明白为什么数据类型是浮点数?

【问题讨论】:

标签: pandas


【解决方案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。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      相关资源
      最近更新 更多