假设我们有这样一个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