Python 熊猫:类型转换返回不正确的值
我有一个数据框,看起来像这样:Python 熊猫:类型转换返回不正确的值,python,pandas,dataframe,casting,floating-point,Python,Pandas,Dataframe,Casting,Floating Point,我有一个数据框,看起来像这样: Values Total Values cbase 2019 下面让我们更好地了解一下价值: >>> df.values [[ 2019.]] >>> df.dtypes Values Total float64 dtype: object 现在,我希望确保该值是整数(无小数),因此: df.astype(int64) Values Total Values cbase
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年发生了变化。我很好奇;发生了什么事?我认为这是一个四舍五入的表达方式;熊猫对象中的值实际上略低于2019。例如:
>>> v = np.nextafter(2019, 0)
>>> v
2018.9999999999998
如果将此值v
放入数据帧中;其代表权截止到2019年:
>>> df = pd.DataFrame([v])
>>> df
0
0 2019
但是,将df
转换为整数只会删除数字的小数部分,因此您可以得到:
>>> df.astype(int)
0
0 2018
请发布数据和可复制代码,还有
df.values[0]
显示了什么?无法发布数据,数据量太大了。它显示df.values[0][2019.]发布了足够的数据和代码来重现此错误,否则这将成为一个猜测游戏。我理解,但获取数据对我来说很难。你看,还是个新手。这似乎是原因。那么,解决方案是将该值四舍五入?要获得2019年的“是”,您可以取而代之的是四舍五入,以获得最接近的整数(然后转换为浮点)-这取决于您的数据表示什么,以及该值实际上略小于2019是否有任何意义。(我的意思是,然后转换为int)