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

