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.0005
或 5*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
下午好,
我在下面复制了一段有用的代码,它似乎适用于我的虚拟数据,可惜它在列数据下行时不适用于所有值。
代码是:
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.0005
或 5*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