小数点舍入错误:在pandas系列上使用时,numpy floor和trunk在python中无法正确工作



当我使用panda数据帧时,np.floor和np.trunc出现了一些奇怪的行为。

这是我所期望的行为,它正在起作用:

np.floor(30.000)
Out[133]: 30.0

但你可以看到,当我做一个系列时,它会错误地处理"浮动整数",并将它们四舍五入一。我使用了一个临时修复程序,将0.00001添加到我的整个数据帧中,在我的情况下,这是可以的,因为我要四舍五入到的级别,但我想知道发生了什么以及如何正确执行。

编辑:我特别需要四舍五入到零的功能。

sample_series

2020-01-01 00:00:00    26.750
2020-01-01 01:00:00    27.500
2020-01-01 02:00:00    28.250
2020-01-01 03:00:00    30.000
2020-01-01 04:00:00    30.625
2020-01-01 05:00:00    31.000
2020-01-01 06:00:00    33.375
2020-01-01 07:00:00    33.750
2020-01-01 08:00:00    34.000
In: sample_series.apply(np.float)
Out:
2020-01-01 00:00:00    26.0
2020-01-01 01:00:00    27.0
2020-01-01 02:00:00    28.0
2020-01-01 03:00:00    29.0
2020-01-01 04:00:00    30.0
2020-01-01 05:00:00    30.0
2020-01-01 06:00:00    33.0
2020-01-01 07:00:00    33.0
2020-01-01 08:00:00    33.0
2020-01-01 09:00:00    33.0
2020-01-01 10:00:00    34.0

您可以使用around()函数

np.around([0.37, 1.64], decimals=1)
array([0.4,  1.6])