2017-08-31 64 views
2

當我在pandas中導入csv文件時,我得到一個DtypeWarning:Pandas Dtypewarning:如何找到列中不同單元格的dtype?

列(3)有混合類型。在導入時指定dtype選項或設置low_memory = False。

  1. 如何找出每個單元的dtype是什麼?我認爲這些數據可能存在一些問題,這就是爲什麼警告即將到來,但它是一個大約有五百行的文件,很難確定罪魁禍首?
  2. 在導入中指定dtype是否是一種很好的做法?如果完成了這項援助,它會不會導致數據「丟失」?
+2

'D型= type',該警告是告訴你,最有可能的,一個列有東西看起來像整數和東西看起來像琴絃!例如,SEDOL安全標識符的某些標識符看起來像亞馬遜的整數'200001',而另一些標識符則是字符串'B02HJf'(製作完成)。我可以通過將字典傳遞給'converters'參數來指定整個列的'dtype',它告訴'read_csv'如何轉換東西。 'read_csv(...轉換器= {'ID':str},...)'確保我的'ID'列以字符串形式出現。這本詞典也可以照顧其他欄目。 – piRSquared

+0

我最後的評論放在一邊,如果你能提供一個能夠再現問題的最小例子,那麼這是最好的。 – piRSquared

+0

大熊貓在遇到無法轉換爲指定類型的值時似乎會拋出異常,可能值得僅僅試圖指定預期類型並查看其失敗的值。 – nyrocron

回答

2

我同意piRSquared。只是補充他的評論,我也遇到了類似的問題。我的專欄應該有字符串值,但一個值是一個浮點值(帶有NaN值)。

您可以通過一些事情來幫助您進行分析。設置你的數據框是df。

df.dtypes 

對於類型「對象」的每一列,你可以通過創建一個細胞的類型更加檢查:您可以檢查每個列的類型

df['type'] = df['mycolumn'].apply(lambda x: type(x).__name__) 

如果您的列應該是字符串看重,您可以檢查哪些細胞是不是字符串:

df[df.type != 'str'] 
相關問題