2017-09-05 67 views
0

我有一個excel文件,並在一列Model具有值「9-3」,這是一個字符串值。我仔細檢查了excel文件,將列數據類型設置爲簡單字符串而不是日期。但仍然當我使用read_excel並將其轉換爲數據框時,值顯示爲2017-09-03 00:00:00,而不是字符串「9-3」。 這裏是我讀的Excel文件:列值讀取日期而不是字符串 - 熊貓

table = pd.read_excel('ManualProfitAdjustmentUpdates.xlsx' , header=0, converters={'Model': str}) 

爲什麼大熊貓沒有治療價值的字符串,甚至當我設置的轉換器,STR任何想法?

+0

你能分享一個Excel文件的片段 - 理想的是列標題和第一行數據。如果數據是私人的,那麼只需要標題行就可以。 –

+0

(評論的原因是要複製,但也要檢查「轉換器」定義是否正確定義)。 –

回答

2

Excel文件中的純字符串設置僅影響數據在Excel中的顯示方式。 轉換器中的str設置僅影響它如何處理它獲取的數據。

要強制excel文件以字符串的形式返回數據,單元格的第一個字符應該是一個撇號。 將「9-3」更改爲「9-3」。

2

這個問題可能與excel有關。確保整個列以文本形式存儲,而不僅僅是您正在討論的奇異值。如果excel在任何時候都將該列保存爲數據,則無論顯示什麼內容或數據類型是否更改,它都將在該單元中存儲一年。熊貓將讀取整個列作爲一種數據類型,所以如果您的日期高於9-3,它將被轉換。將日期更改爲沒有年份的字符串可能會很棘手。將Excel表格保存爲您喜歡的適當格式後再保存爲csv會更好,然後使用pandas pd.read_csv()。我做了一個試驗Excel工作簿 「book1.xlsx」

9-3 1 Hello 
12-1 2 World 
1-8 3 Test 

然後跑

import pandas as pd 
df = pd.read_excel('book1.xlsx',header=0) 
print(df) 

和回來我的數據幀正確。因此,我被認爲是優秀的。對不起,這不是最好的答案,但我不相信這是一個熊貓錯誤。