pandas:类型转换返回错误的值



我有一个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年,价值发生了变化。我很好奇;发生了什么事?

我认为这是表示法的四舍五入;你在Pandas对象中的价值实际上略低于2019年。例如:

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

如果将此值v放入DataFrame中;代表权:

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

然而,将df强制转换为整数只会减少数字的小数部分,因此您可以得到2018:

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

最新更新