Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:类型转换返回不正确的值_Python_Pandas_Dataframe_Casting_Floating Point - Fatal编程技术网

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)