为什么float64允许NA,但int32不允许?

时间:2015-09-03 15:41:31

标签: python numpy pandas

df = pd.DataFrame({a:[1,2], b:[None,3]})
df.dtypes

输出:

a      int64
b    float64

然后:

df.b.astype(int)

输出:

*** ValueError: Cannot convert NA to integer

一般来说,我希望如果一个数字类型接受NA(例如float64),那么所有人都会接受NA。这背后的原因是什么?

1 个答案:

答案 0 :(得分:6)

这取决于数字的表示方式。浮点数为IEEE-754,它定义了代表NaN或"非数字的特定位模式。"整数通常具有更简单的表示,并且没有NaN的概念。

Pandas文档包含问题的more extended discussion