Pandas之read_csv()读取文件跳过报错行的解决


Posted in Python onApril 21, 2020

读取文件时遇到和列数不对应的行,此时会报错。若报错行可以忽略,则添加以下参数:

样式:

pandas.read_csv(***,error_bad_lines=False)

pandas.read_csv(filePath) 方法来读取csv文件时,可能会出现这种错误:

ParserError:Error tokenizing data.C error:Expected 2 fields in line 407,saw 3.

是指在csv文件的第407行数据,期待2个字段,但在第407行实际发现了3个字段。

原因:header只有两个字段名,但数据的第407行却出现了3个字段(可能是该行数据包含了逗号,或者确实有三个部分),导致pandas不知道该如何处理。

解决办法:把第407行多出的字段删除,或者通过在read_csv方法中设置error_bad_lines=False来忽略这种错误:

改为

pandas.read_csv(filePath,error_bad_lines=False)

来忽略掉其中出现错乱(例如,由于逗号导致多出一列)的行。

KeyError错误:

报这种错是由于使用了DataFrame中没有的字段,例如id字段,原因可能是:

.csv文件的header部分没加逗号分割,此时可使用df.columns.values来查看df到底有哪些字段:

print(df.columns.values)

.在操作DataFrame的过程中丢掉了id字段的header,却没发现该字段已丢失。

例如:

df=df[df['id']!='null']#取得id字段不为null的行
df=df['id']#赋值后df为Series,表示df在id列的值,而不再是一个DataFrame,于是丢掉了id的头,此时若再使用df['id']将报错。

取列的值,与取列的区别:

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读取文件时产生错误:EOF inside string starting at line

解决方法:使用参数 quoting

df = pd.read_csv(csvfile, header = None, delimiter="\t", quoting=csv.QUOTE_NONE, encoding='utf-8')

以上这篇Pandas之read_csv()读取文件跳过报错行的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现的数据结构与算法之基本搜索详解
Apr 22 Python
在Lighttpd服务器中运行Django应用的方法
Jul 22 Python
Python中操作符重载用法分析
Apr 29 Python
python中将字典形式的数据循环插入Excel
Jan 16 Python
Python3中的bytes和str类型详解
May 02 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
Python画图高斯分布的示例
Jul 10 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
PyQt5实现画布小程序
May 30 Python
谈谈python垃圾回收机制
Sep 27 Python
基于python实现数组格式参数加密计算
Apr 21 #Python
python实现与redis交互操作详解
Apr 21 #Python
Django-migrate报错问题解决方案
Apr 21 #Python
pandas读取csv文件提示不存在的解决方法及原因分析
Apr 21 #Python
jupyter 导入csv文件方式
Apr 21 #Python
tensorflow指定CPU与GPU运算的方法实现
Apr 21 #Python
Python多线程实现支付模拟请求过程解析
Apr 21 #Python
You might like
php读取excel文件的简单实例
2013/08/26 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
Javascript 运动中Offset的bug解决方案
2014/12/24 Javascript
JS获取iframe中marginHeight和marginWidth属性的方法
2015/04/01 Javascript
jQuery实现仿Google首页拖动效果的方法
2015/05/04 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
python装饰器使用方法实例
2013/11/21 Python
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
简单介绍Python中的readline()方法的使用
2015/05/24 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
幼儿园消防演练方案
2014/02/13 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
表扬通报怎么写
2015/01/16 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
食堂卫生管理制度
2015/08/04 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
mysqldump进行数据备份详解
2022/07/15 MySQL