Python 用read_csv读取txt文件出现错误:ParserError: Error tokenizing data. C error: Expected 57 fields in line

读取txt文件的代码如下:

txtData = pd.read_csv(datafile, sep =',', compression = 'gzip', header=None)

出现如下错误:

ParserError: Error tokenizing data. C error: Expected 57 fields in line 66, saw 58

目前网上普遍的解决方法都是在read_csv()中添加:

error_bad_lines=False

添加这个参数的意思是跳过有问题的行,使其不报错。

但个人觉得这只是一种换汤不换药的解决方法,甚至会因为忽视错误造成最后读取的数据存在问题。

所以我的解决方法是,定位到错误的行,如我这里是第66行,错误的意思是,本应该是57列数据,但现在发现有58列。在我仔细分析之后,发现某一列中有用逗号拼接的字符串,而我的txt文件恰好也是用逗号分隔的,这就造成了在read_csv读取时,用逗号拼接的字符串(原本用一列表示)被分隔成了两列,造成最终多了一列。

既然知道了错误原因,那就很好办了,要么将用逗号分隔的字符串用其他符号进行分隔,要么读取的txt文本用其他符号分隔。

这个错误也提醒我,对于DataFrame数据处理时,要尽量避免数据中出现像逗号这样常见的分隔符。

 

你可能感兴趣的:(Python错误集锦)