2014-09-29 176 views
7

我從SQL轉儲,看起來像下面的(用頭FILE.CSV從終端前幾行)取一個CSV文件:導入在大熊貓一個CSV文件導入到數據幀大熊貓

??AANAT,AANAT1576,4 
AANAT,AANAT1704,1 
AAP,AAP-D-12-00691,8 
AAP,AAP-D-12-00834,3 

當我使用pd.read_csv('file.csv')命令我得到一個錯誤「ValueError:沒有列從文件解析」。

關於如何將CSV文件導入到表格並避免錯誤的任何想法?

擬訂一項問題(以下Ed的評論)

我試圖標題=無,skiprows = 1,以避免?? (從終端使用head命令時出現)。

的文件路徑提取物http://goo.gl/jyYlIK

+1

那些是''??真的在文本文件?當我導入你的數據導入沒有錯誤,你可以嘗試'pd.read_csv('file.csv',header = None)' – EdChum 2014-09-29 10:52:24

+0

謝謝埃德只是闡述了這個問題 - 也許是一個有趣的編碼,但不知道如何處理在這種情況下 – user7289 2014-09-29 11:09:39

+0

'??'是否應該在那裏,它應該仍然會導入,除非這些'??'是一些奇怪的控制字符。你是否能夠發佈一個鏈接到原始CSV文件,目前如果我複製並粘貼你的數據我可以導入它,你應該能夠確認這是你的結局,所以可能會出現一些問題,如果你的CSV文件出錯 – EdChum 2014-09-29 11:11:50

回答

11

所以??字符,你看到的是實際上非打印字符,使用十六進制編輯器顯示,它們實際上是utf-16 little endian\FFEE在您的原始CSV文件中查找之後,是字節順序標記。

因此,所有你需要做的是通過這爲編碼類型,它在精細上寫着:

In [46]: 

df = pd.read_csv('otherfile.csv', encoding='utf-16', header=None) 
df 
Out[46]: 
     0    1 2 
0 AANAT  AANAT1576 4 
1 AANAT  AANAT1704 1 
2 AAP AAP-D-12-00691 8 
3 AAP AAP-D-12-00834 3 
4 AAP AAP-D-13-00215 10 
5 AAP AAP-D-13-00270 7 
6 AAP AAP-D-13-00435 5 
7 AAP AAP-D-13-00498 4 
8 AAP AAP-D-13-00530 0 
9 AAP AAP-D-13-00747 3 
+0

我已經實施了你的建議,但是我也得到了同樣的錯誤。 – 2016-07-15 06:37:57

+0

對不起,我不能評論,除非你提供的實際數據,你可以嘗試傳遞不同的編碼'utf-8',關鍵是看前幾個字節,看看它是否匹配已知的[字節順序標記]( https://en.wikipedia.org/wiki/Byte_order_mark#Representations_of_byte_order_marks_by_encoding) – EdChum 2016-07-15 08:47:53