作者:缅甸新葡京国际 | 来源:互联网 | 2022-12-08 10:51
我从数据框中抓取了一行,如下所示:
https://i.stack.imgur.com/Y9LUE.png
要么
Clicks Spend clk_ar CPC AdRank temp tempRan
36.0 248.76 59.94 6.91 1.67 1.665 1.67
我需要在列中舍入2位数的值 temp
选项1:
round(df.temp,2)
OUTPUT:
1676725 1.66
Name: temp, dtype: float64
选项2:
df.temp.apply(lambda x:round(x,2))
OUTPUT:
1676725 1.67
Name: temp, dtype: float64
两轮函数表现出不同的行为.显然,选项1与python 3行为一致.请参阅Python 3.x舍入行为
我只是想知道为什么选项2表现得那样.谢谢你的帮助!
1> Scott Boston..:
我认为原因在于每个numpy docs
笔记
对于正好在舍入小数值之间的值,NumPy舍入到最接近的偶数值.因此,1.5和2.5轮到2.0,-0.5和0.5轮到0.0等.由于IEEE浮点标准[1]中的小数部分的不精确表示以及当用10的幂进行缩放时引入的误差,结果也可能是令人惊讶的.
在选项1中,您将使用about规则对numpy.float进行舍入.
在选项2中,您将在此处舍入python float数据类型docs.
浮点运算的乐趣:
round(1.675, 2)
1.68
round(2.675, 2)
2.67