问题描述
下午好,
我在下面复制了一段有用的代码,该代码似乎可以在我的伪数据上使用,可惜的是,由于它沿着列数据向下移动,因此不适用于所有值。
代码是:
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.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
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