解决Pandas读取CSV错误 Error tokenizing data. C error: Expected * fields in line *, saw *

假设我们有这样一个csv文件:

col_1,col_2,col_3
1,2,3
4,5,6
7,8,9,10

 这时候我们运行:

import pandas as pd
df=pd.read_csv('test.csv')
print(df)

会得到如下错误: 

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

原因就是最后一行的列数多了一列。

这时候如果你认为这一行是不好的数据,想要去除掉,可以用:

 df=pd.read_csv('test.csv',on_bad_lines='skip')

此时运行结果为:

   col_1  col_2  col_3
0      1      2      3
1      4      5      6

 或者可以去除并同时提醒哪一行有问题:

df=pd.read_csv('test.csv',on_bad_lines='warn')

如果想要保留这一行的数据,那就需要修改header,只需要把csv文件修改为:

col_1,col_2,col_3,col_4
1,2,3
4,5,6
7,8,9,10

这时候header的列数和第三行的列数一样了,就可以正常print了:

   col_1  col_2  col_3  col_4
0      1      2      3    NaN
1      4      5      6    NaN
2      7      8      9   10.0

另外还可以用excel打开csv,然后直接点保存,这时候再print就会显示:

   col_1  col_2  col_3  Unnamed: 3
0      1      2      3         NaN
1      4      5      6         NaN
2      7      8      9        10.0

因为excel的保存把原来的csv文件变成了如下文件:

col_1,col_2,col_3,
1,2,3,
4,5,6,
7,8,9,10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值