gpt4 book ai didi

python - Pandas 四舍五入小数不起作用

转载 作者:太空狗 更新时间:2023-10-30 02:37:24 31 4
gpt4 key购买 nike

有人可以解释一下我发生了什么,还是我遗漏了一些非常明显的东西?

import pandas as pd
df = pd.DataFrame([[0.0094909865]])
df = df.round(9)
print(df)

这给了我 0.009490986

我期待的是 0.009490987

的舍入值

谁能帮我理解一下?我正在使用 Pandas '0.20.3'

最佳答案

好问题。这是一个未记录的怪癖。实际上,DataFrame.round 使用了 numpy.around。应该在pandas documentation中提及.


numpy.around() 执行以下操作:

For values exactly halfway between rounded decimal values, Numpy rounds to the nearest even value. Thus 1.5 and 2.5 round to 2.0, -0.5 and 0.5 round to 0.0, etc.

参见 Reference了解更多详情。

要实现您想要的效果,您可以执行以下操作:

from math import ceil, floor
import pandas as pd

df = pd.DataFrame([[0.0094909865]])

def float_round(num, places = 0, direction = floor):
return direction(num * (10**places)) / float(10**places)

print( float_round(df.values,9,ceil) )
print( float_round(df.values,9) )

print( float_round(1.1389182804 ,9) )

结果

0.009490987
0.009490986

1.13891828

关于python - Pandas 四舍五入小数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320813/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com