提问人:Eugenio.Gastelum96 提问时间:8/2/2023 更新时间:8/2/2023 访问量:51
数值列的 pandas <NA> 和 NaN 之间的区别
Difference between pandas <NA> and NaN for numeric columns
问:
我有一个充满值的 float64 数据框列,如果我再次将其转换为 float64,它们会被替换为不相同的值。NaN
<NA>
我知道值是 ,而值是 ,所以它们是不同的东西。那么,为什么将已经 float64 的列转换为 float64 呢?<NA>
pd.NA
NaN
np.nan
NaN
<Na>
下面是一个示例:
df=pd.DataFrame({'a':[1.0,2.0]})
print(df.dtypes)
#output is: float64
df['a'] = np.nan
print(df.dtypes)
# output is float64
print(df)
a
0 NaN
1 NaN
#Now, lets cast that float64 to float 64
df3['a']=df3['a'].astype(pd.Float64DType())
print(df3.dtypes)
#output is Float64, notice it's uppercase F this time, previously it was lowercase
print(df3)
a
0 <NA>
1 <NA>
这似乎是两回事。并且 (np.nan) 是 while (pd.NA) 是 nullfloat64
Float64
NaN
float64
<NA>
Float64
这是正确的吗?如果是这样,引擎盖下是什么?
答:
3赞
Mohammad Zarak
8/2/2023
#1
是的,你是对的。float64 和 Float64 是 pandas 中的两种不同数据类型。不同之处在于,Float64 是一种扩展类型,可以使用特殊的哨兵来保存缺失值,而 float64 是一种原生 numpy 类型,它使用 NaN 来表示缺失值。在后台,Float64 使用带有 dtype 对象的 numpy 数组来存储值,而 float64 使用带有 dtype float64 的 numpy 数组。 这意味着与 float64 相比,Float64 可能会有一些性能开销,但它也允许更一致地处理不同数据类型中的缺失值。
评论