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)文章
python 數(shù)據(jù)清洗之數(shù)據(jù)合并、轉(zhuǎn)換、過濾、排序
這篇文章主要介紹了python 數(shù)據(jù)清洗之數(shù)據(jù)合并、轉(zhuǎn)換、過濾、排序的相關(guān)資料,需要的朋友可以參考下2017-02-02python利用多線程+隊列技術(shù)爬取中介網(wǎng)互聯(lián)網(wǎng)網(wǎng)站排行榜
這篇文章主要介紹了python利用多線程+隊列技術(shù)爬取中介網(wǎng)互聯(lián)網(wǎng)網(wǎng)站排行榜,文章基于python的相關(guān)內(nèi)容展開詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-05-05Windows上使用virtualenv搭建Python+Flask開發(fā)環(huán)境
在自己本機的開發(fā)環(huán)境下,我們完全可以使用virtualenv來hold住多個Python環(huán)境,這樣就可以留出一個專門服役于Flask框架,哈哈,這里我們就來看看如何在Windows系統(tǒng)上使用virtualenv搭建Python+Flask開發(fā)環(huán)境2016-06-06Keras模型轉(zhuǎn)成tensorflow的.pb操作
這篇文章主要介紹了Keras模型轉(zhuǎn)成tensorflow的.pb操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python語法學(xué)習(xí)之正則表達式的量詞匯總
通過正則的規(guī)則匹配到的信息都是一個單獨的字符存到輸出結(jié)果中的,如何更夠根據(jù)字符串中的詞組進行匹配呢?因此本文將帶大家學(xué)習(xí)一下正則表達式中的量詞符號與組的概念,感興趣的可以了解一下2022-04-04Python Vaex實現(xiàn)快速分析100G大數(shù)據(jù)量
Vaex是一個開源的DataFrame庫,它可以對表格數(shù)據(jù)集進行可視化、探索、分析,甚至機器學(xué)習(xí),這些數(shù)據(jù)集和你的硬盤驅(qū)動器一樣大。本文就來聊聊如何利用Vaex實現(xiàn)快速分析100G大數(shù)據(jù)量,需要的可以參考一下2023-03-03