pd.read_csv() 中的两个参数 error_bad_lines & low_memory

pandas.read_csv — pandas 2.0.1 documentation

import pandas as pd
df = pd.read_csv("./xxx.csv", error_bad_lines=False, sep='\t', low_memory=False) 
# error_bad_lines = False 跳过错误的行。不过这种写法将会被废弃,建议写成 on_bad_lines = 'skip'

error_bad_lines 参数

使用场景:读取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来忽略这种错误,效果如下:

注意事项:

FutureWarning: The error_bad_lines argument has been deprecated and will be removed in a future version. Use on_bad_lines in the future.

所以可以换成如下写法:

df = pd.read_csv(filepath, on_bad_lines = 'skip')

low_memory 参数

使用场景:当出现如下报错时

DtypeWarning: Columns (8) have mixed types. Specify dtype option on import or set low_memory=False.

原因:提示输入数据列有混合类型,而pandas默认要找到可以使所占用空间最小的类型来储存你的数据。low_memory设置为false之后,pandas就不进行寻找,直接采用较大的数据类型来储存

解决办法:将low_memory设置为false

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cheer-ego

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值