2017-11-11 194 views
1

比方說,我有以下的Excel文件來讀:大熊貓read_excel:NaN值強迫他人在同一列轉換爲浮動

enter image description here

我想是一個簡單的解決方案(最好是單行),可以讀取excel,以便將日期轉換爲str(或至少int),空白值爲nannat或任何可由檢測到的內容。

如果我使用df = pd.read_excel(file_path),我所得到的是

df 
Out[8]: 
       001002.XY 600123.AB 123456.YZ 555555.GO 
ipo_date  20100203.0 20150605  NaN 20090501.0 
delist_date   NaN 20170801  NaN   NaN 

所以公認的空白單元格爲NaN,這是很好的,但忌諱的是,所有其他值都被迫float64,即使大熊貓他們意圖僅僅是strints。 (編輯:似乎如果列,例如列[1],沒有nan s,那麼其他值將不會被強制爲float。但在我的情況下,大多數列有delist_date空白,因爲大多數股票有一個IPO日期,但尚未摘牌。)

對於我所知道的,雖然,我試過dtype=str關鍵字ARG,和它給了我

df 
Out[10]: 
      001002.XY 600123.AB 123456.YZ 555555.GO 
ipo_date  20100203 20150605  nan 20090501 
delist_date  nan 20170801  nan  nan 

看起來不錯?確實,日期現在爲str,但有一點可笑的是,nan現在變成了文字串!例如。

df.iloc[1, 0] 
Out[12]: 
'nan' 

這將使我不得不添加一些奇怪的東西,如df.replace稍後。

我沒有嘗試converters,因爲它需要逐列指定數據類型,而我正在使用的實際excel文件是一個很長的電子表格(大約3k列)。我不想在excel中轉​​換電子表格。

任何人都可以幫忙嗎?提前致謝。

+0

我發現了類似的意外行爲。我不知道埃弗特對我的問題[這裏](https://stackoverflow.com/a/45814200/4799172)的出色答案給出了任何見解。 – roganjosh

+0

@roganjosh謝謝我要檢查出來。 – Vim

+0

它絕對是一個切線,但我發現數據類型轉換奇怪(從我的情況csv),所以也許它給你另一個角度。 – roganjosh

回答