有人可以解释一下我发生了什么,或者我错过了一些非常明显的东西?
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。