我遇到的情况是我将this csv file加载到pandas DataFrame中并对某些列中的值求和。
除了一列(名为: Rise )之外,大多数列的结果总和四舍五入到小数点后3位。如何将总和(这是一个浮点数)舍入/近似为3位小数?
我在代码段中尝试了下面列出的方法,最接近舍入的总和为: 0.90200000000000002 而不是 0.902
以下是我在Jupyter笔记中尝试过的内容: -
import numpy as np
import pandas as pd
level_table = pd.read_csv("Level_Book.csv")
level_table.round(3)
BS = level_table["Back Sight"].sum()
FS = level_table["Fore Sight"].sum()
Rise = level_table["Rise"].sum()
Fall = level_table["Fall"].sum()
# I tried the below methods, the closest rounded the sum to: 0.90200000000000002 instead of 0.902
# Rise = np.around(Rise, decimals=3)
# Rise = np.ceil(Rise)
# Rise = np.round(Rise, decimals=3)
# Rise = Rise.apply(np.round())
BS, FS, Rise, Fall
输出= (4.127,4.127,0.90200000000000002,0.902)或(4.127,4.127,0.9019999999999999,0.902)
预期产出= (4.127,4.127,0.902,0.902)
答案 0 :(得分:0)
user2285236在comment to the question中解决了这个问题。
使用内置的round
函数:
round(var_Name, value)
var_Name
是要舍入的变量,并且value
是您要舍入到的小数位数的整数值示例:
>>> sum = 6.77765345098888
>>> round(sum, 3)
>>> sum
6.777
答案 1 :(得分:0)
您可以简单地通过应用apply函数来做到这一点:
sleepstudy['Reaction'] =d['Column'].apply(lambda x: round(x, 3))