pandas dataframe浮点问题

时间:2017-12-04 23:40:10

标签: python pandas floating-point

我有一个包含浮点值的列,例如600.0750, 600.2274, 600.3798, 600.5322。我将值四舍五入为3位小数,然后将diff()函数应用于该列,该列为我提供了值0.1524,0.1524和{ {1}}。要从输出中删除重复项,我应用了0.1524。我原本只希望看到drop_duplicates,但实际上我得到0.1524

所以我将输出值存储在另一个数据帧df_diff中,然后我0.1524,0.1524,0.1524df_diff.iloc[2]存储到0.15239999999994325df_diff.iloc[3]我得到0.15240000000005693

我回去为原始df做同样的事情,我得到600.07500000000005。因此,即使我在四舍五入,价值也没有四舍五入。我该怎么做才能解决这个问题?

由于

1 个答案:

答案 0 :(得分:1)

你说你四舍五入到小数点三位,但你的数字有四位数。以下假设四是正确的数字。

有几种选择。首先,在尝试删除重复项之前,您可以尝试不进行舍入。如果这不起作用,如果你不太关注你正在舍入到的精确精确度,你可以舍入到2的幂,例如2 ** 14。第二种选择是使用https://docs.python.org/2/library/fractions.html模块。第三种选择是将数字乘以10000,然后将它们四舍五入为整数。如果你想要原始数字,那么你可以再将它们除以10000。