我有一列带有浮点值的列,例如600.0750, 600.2274, 600.3798, 600.5322。我将值四舍五入到小数点后三位,然后将diff()函数应用于该列,该列为我提供了0.1524,0.15240.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。

10-08 03:51