在Python pandas DataFrame中舍入/近似一个浮点数到3位小数

时间:2016-08-07 08:35:59

标签: python pandas numpy decimal jupyter-notebook

我遇到的情况是我将this csv file加载到pandas DataFrame中并对某些列中的值求和。

除了一列(名为: Rise )之外,大多数列的结果总和四舍五入到小数点后3位。如何将总和(这是一个浮点数)舍入/近似为3位小数?

level-book

我在代码段中尝试了下面列出的方法,最接近舍入的总和为: 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)

enter image description here

2 个答案:

答案 0 :(得分:0)

user2285236comment 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))