我有一列带有浮点值的列,例如600.0750, 600.2274, 600.3798, 600.5322
。我将值四舍五入到小数点后三位,然后将diff()
函数应用于该列,该列为我提供了0.1524,0.1524
和0.1524
值。输出,我应用了drop_duplicates
。我期望只看到0.1524
,但实际上我得到了0.1524,0.1524,0.1524
。
因此,我将输出值存储在另一个数据帧df_diff中,然后执行df_diff.iloc[2]
,这给了我0.15239999999994325
,对于df_diff.iloc[3]
我得到了0.15240000000005693
。
我回过头来,对原始df做同样的操作,得到600.07500000000005
。因此,即使在四舍五入时,值也不会四舍五入。我该怎么做才能解决此问题?
谢谢
最佳答案
您说四舍五入到小数点后三位,但是数字有四位。以下假定四个是正确的数字。
有几种选择。首先,在尝试删除重复项之前,可以尝试不舍入。如果这不起作用,或者您对舍入的精确度不太满意,则可以舍入为2的幂,例如2 ** 14。第二种选择是使用https://docs.python.org/2/library/fractions.html模块。第三种选择是将数字乘以10000,然后将其舍入为整数。如果您想恢复原始数字,则可以再次将它们除以10000。