pandas:类型转换返回不正确的值

时间:2015-10-30 15:32:30

标签: python pandas dataframe casting floating-point

我有一个如下所示的DataFrame:

Values  Total
Values       
cbase    2019

以下是对价值的更好看:

>>> df.values
[[ 2019.]]

>>> df.dtypes
Values
Total     float64
dtype: object

现在我想确保该值是一个整数(无十进制),所以我这样做:

df.astype(int64)

Values  Total
Values       
cbase    2018

价值从2019年变为2018年。我很好奇;发生了什么事?

1 个答案:

答案 0 :(得分:4)

我认为这是一个四舍五入的事情;您在Pandas对象中的值实际上略低于2019年。例如:

>>> v = np.nextafter(2019, 0)
>>> v
2018.9999999999998

如果您将此值v放在DataFrame中;为了表示,它将轮到2019年:

>>> df = pd.DataFrame([v])
>>> df
      0
0  2019

但是,将df强制转换为整数只会丢弃数字的小数部分,因此您将获得2018:

>>> df.astype(int)
      0
0  2018