2017-11-11 165 views
0

我正在使用熊貓遍歷csv。 csv不均勻,即一些額外的列(在某些行中)沒有標題。我得到這個錯誤熊貓跳過列

pandas.errors.ParserError: Error tokenizing data. C error: Expected 11 fields in line 8, saw 12 

我讀了一些解決方案,但其中一些跳過整條生產線及其他建議手動調整。我買不起兩種。 我需要一個方法,可以刪除額外的列保持行的其餘部分。

這裏的例子任何幫助將不勝感激數據

Country Phone   Fax  
Germany 030-0074321 030-0076545 
Mexico (5) 555-4729 (5) 555-3745 
Mexico (5) 555-3932 NULL 
67000 France   88.60.15.31  88.60.15.32 
28023 Spain   (91) 555 22 82 (91) 555 91 99 

的。

+0

請問您能分享一個您的數據的例子嗎? – MedAli

+0

我已經更新了問題本身。請看一看。 –

回答

0

假設你有列[ 'A', 'B', 'C', 'd', 'E']和4行,使得數據幀DF的樣子:

Row A B C D`E 
1  1`1 1 1 5 
2  0 2 0 0 
3  2 4 1 2 2 
4  5 4 5 4 

現在如果你想刪除多餘的列從行1和3「E」值,那麼你可以簡單地讓另一個列表

features=df.columns 
f=[] 
for feature in features: 
    if df[feature].notnull().all(): 
     f.append(feature) 

df=df[f] 
print df 

因此現在輸出將是:

Row A B C D` 
1  1`1 1 1 
2  0 2 0 0 
3  2 4 1 2 
4  5 4 5 4 

希望ŧ他的幫助!

+0

沒有閱讀csv,我怎麼知道我有什麼列? –

+0

用於將csv讀取爲數據幀使用pandas命令,如下所示: 將pandas導入爲pd df = pd.read_csv(pathtofile) 然後執行上述步驟 – Somit

+0

即問題所在。當我使用read_csv讀取csv時,它拋出了上面提到的錯誤。 –

0

如果你知道你有多少列。 data = pd.read_csv('data.csv',usecols = [0,1,2,3]) [0,1,2,3 ...]是包含內容的列。其他你不知道的。 enviroment - python2.7 import pandas data = pandas.read_csv("file.csv") names = list(data) for name in names: if "Unnamed" in name: data.pop(name) print "result" print data

+0

我不知道我有多少列。它可以不同。我無法手動讀取csv,每次輸入靜態列數。 –