我正在使用numpy round函数,它在所有方面都能正常工作,但是当有15.65时,它应该给出15.7,但是它给出15.6。还有其他方法吗?因为我读到很多线程numpy都有这个问题。
df1['result']=df1['a'].apply(lambda x: np.round(x, decimals=1))
答案 0 :(得分:1)
有一个技巧可以将少量数据添加到数据中并取整。但是您需要确保增量小于分辨率。
df = pd.Series(np.arange(0,100,0.05))
df.round(1).head()
# 0 0.0
# 1 0.0
# 2 0.1
# 3 0.2
# 4 0.2
# dtype: float64
(df+1e-10).round(1).head()
# 0 0.0
# 1 0.1
# 2 0.1
# 3 0.2
# 4 0.2
# dtype: float64
答案 1 :(得分:1)
Python内置的round()函数将四舍五入为给定的位数并返回浮点数,如果没有提供四舍五入的位数,则会将数字四舍五入为最接近的整数。
array = [15.65, 15.64, 15.61, 15, 15.94, 15.96]
print([round(i,1) for i in array])
它提供输出[15.7、15.6、15.6、15、15.9、16.0]
答案 2 :(得分:0)
使用round()
python内置函数
In [1]: round(15.65, 1)
Out[1]: 15.7
在您的情况下:
df1['result']=df1['a'].apply(lambda x: round(x, 1))