[英]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.