0

下午好,

我在下面复制了一段有用的代码,它似乎适用于我的虚拟数据,可惜它不适用于所有值,因为它沿着列数据向下移动。

代码是:

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 向上舍入一半。

谢谢你。

4

1 回答 1

-1

向下入(到小数点后 3 位):

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
于 2020-08-17T13:23:38.617 回答