Pandas之read_csv()讀取文件跳過報錯行的解決
讀取文件時遇到和列數(shù)不對應(yīng)的行,此時會報錯。若報錯行可以忽略,則添加以下參數(shù):
樣式:
pandas.read_csv(***,error_bad_lines=False)
pandas.read_csv(filePath) 方法來讀取csv文件時,可能會出現(xiàn)這種錯誤:
ParserError:Error tokenizing data.C error:Expected 2 fields in line 407,saw 3.
是指在csv文件的第407行數(shù)據(jù),期待2個字段,但在第407行實際發(fā)現(xiàn)了3個字段。
原因:header只有兩個字段名,但數(shù)據(jù)的第407行卻出現(xiàn)了3個字段(可能是該行數(shù)據(jù)包含了逗號,或者確實有三個部分),導(dǎo)致pandas不知道該如何處理。
解決辦法:把第407行多出的字段刪除,或者通過在read_csv方法中設(shè)置error_bad_lines=False來忽略這種錯誤:
改為
pandas.read_csv(filePath,error_bad_lines=False)
來忽略掉其中出現(xiàn)錯亂(例如,由于逗號導(dǎo)致多出一列)的行。
KeyError錯誤:
報這種錯是由于使用了DataFrame中沒有的字段,例如id字段,原因可能是:
.csv文件的header部分沒加逗號分割,此時可使用df.columns.values來查看df到底有哪些字段:
print(df.columns.values)
.在操作DataFrame的過程中丟掉了id字段的header,卻沒發(fā)現(xiàn)該字段已丟失。
例如:
df=df[df['id']!='null']#取得id字段不為null的行
df=df['id']#賦值后df為Series,表示df在id列的值,而不再是一個DataFrame,于是丟掉了id的頭,此時若再使用df['id']將報錯。
取列的值,與取列的區(qū)別:
df=df['id']#取id列的值,賦值后df為Series類型,可用print(type(df))來查看其類型
df=df[['id']]#只取df的id列作為一個新的DataFrame,賦值后df仍然是一個DataFrame
df=df[['id','age']]#取df的id和age列作為一個新的DataFrame,賦值后df仍然是一個DataFrame
過濾行
df=df[df['id']!='null']#過濾掉id字段取值為'null'的行
注意,此處的'null'是一個字符串,若df中某行id字段的值不是字符串型,或者為空,將報TypeError:invalid type comparison錯,因為只有相同類型的值才能進行比較。
解決辦法:如果不能保證id列都是string類型,則需要去掉該過濾條件。
補充知識:pandas 使用read_csv讀取文件時產(chǎn)生錯誤:EOF inside string starting at line
解決方法:使用參數(shù) quoting
df = pd.read_csv(csvfile, header = None, delimiter="\t", quoting=csv.QUOTE_NONE, encoding='utf-8')
以上這篇Pandas之read_csv()讀取文件跳過報錯行的解決就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django 返回json數(shù)據(jù)的實現(xiàn)示例
這篇文章主要介紹了Django 返回json數(shù)據(jù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Python ValueError: invalid literal for int() with base 10 實用
這篇文章主要介紹了Python ValueError: invalid literal for int() with base 10 實用解決方法,本文使用了一個取巧方法解決了這個問題,需要的朋友可以參考下2015-06-06
詳細整理python 字符串(str)與列表(list)以及數(shù)組(array)之間的轉(zhuǎn)換方法
這篇文章主要介紹了詳細整理python 字符串(str)與列表(list)以及數(shù)組(array)之間的轉(zhuǎn)換方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

