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中super的用法实例
May 28 Python
完美解决Python2操作中文名文件乱码的问题
Jan 04 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
python回调函数中使用多线程的方法
Dec 25 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
Mar 02 Python
便捷提取python导入包的属性方法
Oct 15 Python
详解python破解zip文件密码的方法
Jan 13 Python
python如何通过twisted搭建socket服务
Feb 03 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
python实现计算器简易版
Dec 17 Python
在Django中使用MQTT的方法
May 10 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下常用正则表达式整理
2010/10/26 PHP
PHP 微信支付类 demo
2015/11/30 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
javascript 设为首页与加入收藏兼容多浏览器代码
2011/01/11 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
javascript每日必学之循环
2016/02/19 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
微信开发 微信授权详解
2016/10/21 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
Python Socket使用实例
2017/12/18 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
Java中的异常处理机制的简单原理和应用
2013/04/27 面试题
公司培训欢迎词
2014/01/10 职场文书
农村文化活动总结
2014/08/28 职场文书
自我检讨书范文
2015/01/28 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL