2017-08-15 277 views
2

我有一個csv文件是通過將Tableau表導出到csv生成的,但我無法設法在Python中打開它。讀取csv文件到熊貓失敗

我試圖使用pd.read_csv但失敗。

import pandas as pd 

#path to file 
path = "tableau_crosstab.csv" 

data = pd.read_csv(path, encoding="ISO-8859-1") 

這適用於文件中讀取,但結果只是一個數字,每行一個字符,並在幀的頭部一些奇怪的字符行。

ÿþd 
o  
m  
a  
i 

等等。當我嘗試導入Excel中的文件,我必須選擇選項卡作爲分隔符,但是當我索引樹,在這裏它失敗

import pandas as pd 

#path to file 
path = "tableau_crosstab.csv" 

data = pd.read_csv(path, encoding="ISO-8859-1", sep='\t') 

CParserError:錯誤符號化數據。 C錯誤:第7行預計1字段,鋸2

我曾嘗試打開帶有編解碼器的文件,然後它說編碼是'cp1252',但使用它作爲編碼也失敗了。

我也嘗試使用utf-8來閱讀它,並且也失敗了。 我正在想出如何解決這個問題。

下面是其中一個副本,如果該文件是,如果有人可以看看鏈接 http://www.mediafire.com/file/6dtxo2deczwy3u2/tableau_crosstab.csv

回答

3

你有統一BOM專門utf-16LE

嘗試

data = pd.read_csv(path, encoding="utf-16", sep='\t') 

有趣的人物你請參閱:ÿþ對應於十六進制FF FE,它是unicode-16小端字節順序標記。如果你看到維基百科的頁面它顯示了所有不同的字節順序標誌着

我讓你讀書時的CSV如下:

In[4]: 
data = pd.read_csv(r'C:\tableau_crosstab.csv', encoding='utf-16', sep='\t') 
data 

Out[4]: 
     domain Month of date impressions clicks 
0 test1.no  jun.17  725 676 633 
1 test1.no  mai.17  422 995 456 
2 test1.no  apr.17  241 102 316 
3 test1.no  mar.17  295 157 260 
4 test1.no  feb.17  122 902 198 
5 test1.no  jan.17  137 972 201 
6 test1.no  des.16  274 435 361 
7 test2.com  jun.17 3 083 373 1 638 
8 test2.com  mai.17 3 370 620 2 036 
9 test2.com  apr.17 2 388 933 1 483 
10 test2.com  mar.17 2 410 675 1 581 
11 test2.com  feb.17 2 311 952 1 682 
12 test2.com  jan.17 1 184 787 874 
13 test2.com  des.16 2 118 594 1 738 
14 test3.com  jun.17  411 456  41 
15 test3.com  mai.17  342 048  87 
16 test3.com  apr.17  197 058 108 
17 test3.com  mar.17  288 949 156 
18 test3.com  feb.17  230 970 130 
19 test3.com  jan.17  388 032 115 
20 test3.com  des.16 1 693 442 166 
21 test4.no  jun.17  521 790 683 
22 test4.no  mai.17  438 037 541 
23 test4.no  apr.17  618 282 1 042 
24 test4.no  mar.17  576 413 956 
25 test4.no  feb.17  451 248 636 
26 test4.no  jan.17  293 217 471 
27 test4.no  des.16  641 491 978 
+0

它的工作對我來說太。謝謝!所以從看看你能明白編碼是'utf-16'? – Siesta

+0

是的,如果你看維基百科頁面:https://en.wikipedia.org/wiki/Byte_order_mark#Byte_order_marks_by_encoding,你會看到十六進制值和顯示的字符,你習慣看到這些並在一段時間後識別它們 – EdChum