2016-06-13 57 views
3

我遇到了一個問題,當我使用熊貓讀取Mysql表格時,一些列(見'to_nlc')用於整數變成浮點數(之後自動添加.0)。 任何人都可以弄明白嗎?或者有些猜測?非常感謝!熊貓讀取sql整數變成浮點數

enter image description here enter image description hereenter image description here

回答

5

問題是你的數據包含NaN值,因此int被自動轉換爲float

我想你可以檢查NA type promotions

在引進來港爲通過重新索引或其他方式,布爾和整數類型將被提升到一個不同的D型,以便存儲在NAS現有的系列或數據幀。這是由該表中總結:

Typeclass Promotion dtype for storing NAs 
floating no change 
object  no change 
integer  cast to float64 
boolean  cast to object 

雖然這可能看起來像一個沉重的權衡,在實踐中我發現極少數情況下,這是在實踐中的問題。在下一節中對這個動機的一些解釋。

+1

這怎麼能避免?該整數用作標識符,以便強制轉換爲float導致精度錯誤 –

+0

@HananShteingart - 是否可以將'NaN'替換爲'0'?例如'df ['colname'] = df ['colname']。fillna()。astype(int)'或'df = df.fillna(0).astype(int)'? – jezrael

+0

我已經從SQL中獲取它作爲float。我所做的是將該列轉換爲sql查詢中的字符串:例如CAST(bigint_column AS VARCHAR),所以我將它作爲數據框中的字符串來獲取。我不介意它不再是數字,因爲列無論如何都表示一個ID。 –