2016-07-13 19 views
0

我正在讀取一個CSV文件到Panda的數據框中。在檢索數據時,我得到的數據與原始數據略有不同。如何修復Python Pandas Dataframes中的浮點數差異?

我相信它與Python代表小數的方式有關。但是,我如何解決它/解決它?

CSV數據例如:

1313331280,10.4,0.779 
1313334917,10.4,0.316 
1313334917,10.4,0.101 
1313340309,10.5,0.15 
1313340309,10.5,1.8 

熊貓數據幀:

df = pd.read_csv(csv_file_full_path, names=['time','price', 'volume']) 

輸出:

ORDERS_DATA_FRAME.iloc[0]['volume'] 

source file value = 0.779 
the pandas output value = 0.77900000000000003 

時讀入數據幀熊貓的數據被得到改變。什麼是修復?

+1

可能重複的[浮點數學是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – jonrsharpe

+0

這裏還有其他的東西在發生。首先,我沒有做任何數學。我只是讀取讀入熊貓數據框的數據。接下來,它是Python,而不是Javascript – Emily

+0

不,它完全一樣。 '0.779' **不能**被完全表示爲浮點數,所以你可以在數據幀中看到*幾乎*那個數字。語言無關緊要。見例如http://floating-point-gui.de/。另外,請注意數據框不屬於熊貓; o) – jonrsharpe

回答

0

儘管問題出在浮點算法上,但如果知道列的最大小數位數,則可以使用round(float_number, number_of_decimals)取回正常值。或者,您可以將該列讀作字符串,然後使用float(float_number_string)將其轉換爲浮點。