我需要将一个列的四舍五入,浮动到小数点2位,但不需要将数据舍入最近的值。
我的数据:
df = pd.DataFrame({'numbers': [1.233,1.238,5.059,5.068, 8.556]})
df.head()
numbers
0 1.233
1 1.238
2 5.059
3 5.068
4 8.556预期输出:
numbers
0 1.23
1 1.23
2 5.05
3 5.06
4 8.55问题所在
我试过的每一件事都把数字舍入到最近的数字(0-4是0,5-9是加1到截断的小数位)
不起作用的例子
df[['numbers']].round(2)
#or df['numbers'].apply(lambda x: "%.2f" % x)
#output
numbers
0 1.23
1 1.24
2 5.06
3 5.07
4 8.56发布于 2020-08-17 21:58:23
这更像是打包票
df.numbers*100//1/100
Out[186]:
0 1.23
1 1.23
2 5.05
3 5.06
4 8.55
Name: numbers, dtype: float64发布于 2020-08-17 22:21:16
试试这个,效果也很好
import pandas as pd
do = lambda x: float(str(x).split('.')[0] +'.' + str(x).split('.')[1][0:2])
df = pd.DataFrame({'numbers': list(map(do, [1.233,1.238,5.059,5.068, 8.556]))})
print(df.head())输出
numbers
0 1.23
1 1.23
2 5.05
3 5.06
4 8.55https://stackoverflow.com/questions/63459150
复制相似问题