Python 中所有列值的舍入误差

Rounding error across all column values in 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.

四舍五入

谢谢。

四舍五入向下(小数点后第三位):

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

四舍五入向上:

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

向下输出:

  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

UP输出

  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