簡體   English   中英

在Python pandas DataFrame中將浮點數四舍五入/近似到小數點后三位

[英]Round/Approximate a float number to 3 decimal place in Python pandas DataFrame

我有一種情況,我將此csv文件加載到pandas DataFrame中,並對某些列中的值求和。

除一列(命名為: Rise )外,大多數列的結果總和舍入到小數點后三位。 如何將總和(一個浮點數)四舍五入/近似到小數點后三位?

水平書

我試着在代碼片段下面列出的方法,最接近四舍五入總和: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)

在此處輸入圖片說明

您可以使用apply函數簡單地做到這一點:

sleepstudy['Reaction'] =d['Column'].apply(lambda x: round(x, 3))

在問題的評論中user2285236解決了此問題

使用內置的round功能:

round(var_Name, value)
  • var_Name是要舍var_Name的變量,並且
  • value是要舍入的小數位的整數值

例:

>>> sum = 6.77765345098888
>>> round(sum, 3)
>>> sum
6.777

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM