在Python中所有列值的舍入误差

问题描述

下午好,

我在下面复制了一段有用的代码,该代码似乎可以在我的伪数据上使用,可惜的是,由于它沿着列数据向下移动,因此不适用于所有值。

代码是:

import pandas as pd
from decimal import *

Data['Value'] = Data['Value'].map(lambda x: Decimal(x).quantize(Decimal('0.001'),rounding=ROUND_HALF_UP))

虚拟数据:

Data = {'Code' : ['1','2','3','4','5','6'],'Group' : ['a','b','c','d','e','f'],'Value' : [20.2535,21.874,7.6475,101.84556,209.8625913,99.7655037]}
       

Data = pd.DataFrame(Data,columns = ['Code','Group','Value'])

但是,输出适用于第一个值,而且舍入而不是向上取整。可以解决这个问题,因为正如他的代码所述,我想四舍五入吗?

  output:              Expected: 

0     20.253         0     20.254 << This one is incorrect
1     21.874         1     21.874
2      7.647         2      7.648 << This one is incorrect
3    101.846         3    101.846
4    209.863         4    209.863
5     99.766         5     99.766

任何帮助将不胜感激。我正在寻找四舍五入为3.dp,其中所有值都按照excel进行四舍五入的方法。

谢谢。

解决方法

四舍五入 DOWN (至小数点后三位):

Data.loc[:,'Value'] = np.round(Data['Value'] - 5e-4,3) 

圆形 UP

Data.loc[:,'Value'] = np.round(Data['Value'],3)

我希望所有版本的python 5e-4 = 0.0005都适用。如果我错了,请使用0.00055*10**-4

数据:

  Code Group       Value
0    1     a   20.253500
1    2     b   21.874000
2    3     c    7.647500
3    4     d  101.845560
4    5     e  209.862591
5    6     f   99.765504

DOWN输出

  Code Group    Value
0    1     a   20.253
1    2     b   21.874
2    3     c    7.647
3    4     d  101.845
4    5     e  209.862
5    6     f   99.765

上输出

  Code Group    Value
0    1     a   20.254
1    2     b   21.874
2    3     c    7.648
3    4     d  101.846
4    5     e  209.863
5    6     f   99.766

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...