[解决方法]ValueError: Wrong number of columns at line 2

问题介绍

我用numpy写的一段代码,就是用逗号分隔符读取泰坦尼克号数据.csv文件里的数据:

import numpy as np
with open('泰坦尼克号数据.csv', encoding = 'utf-8') as f:
    csv_data = np.loadtxt(f, str, delimiter=',')
print(csv_data)

点击运行后报错:

ValueError: Wrong number of columns at line 2

问题分析

首先看这句报错是什么意思:第二行列数错误。

然后顺理成章地想到为什么第二行的列数不对呢?是不是数据单元格也含有逗号,在执行delmiter= ','的时候在这个不该切分的地方也切分了呢?

因此去Excel查看,果然在Name这一列有多余的逗号

 这就导致了第二行比第一行多1列,也就导致了第二行列数错误的出现。

解决方法

知道原因后就能解决啦,由于我是为了完成numpy作业才遇到的这个问题,所以我就投机取巧,采取了一个投机的方法:在Excel中,查找并替换逗号(注意:英文格式 , )为冒号(:)

然后把csv文件另存为‘泰坦尼克号数据2.csv’ ,修改代码加载新的csv文件:

import numpy as np
with open('泰坦尼克号数据2.csv', encoding = 'utf-8') as f:
    csv_data = np.loadtxt(f, str, delimiter=',')
print(csv_data)

点击运行后不报错,顺利将csv_data打印了出来:

[['PassengerId' 'Survived' 'Pclass' ... 'Fare' 'Cabin' 'Embarked']
 ['1' '0' '3' ... '7.25' '' 'S']
 ['2' '1' '1' ... '71.2833' 'C85' 'C']
 ...
 ['889' '0' '3' ... '23.45' '' 'S']
 ['890' '1' '1' ... '30' 'C148' 'C']
 ['891' '0' '3' ... '7.75' '' 'Q']]

经验总结

产生这种错误的原因就是出现了列数不等的情况,因此需要根据Wrong number of columns at line (?)问号处提示的行号,定位原始数据中首次出现列数不等错误的行,从而找到造成列数不等的原因。

猜你喜欢

转载自blog.csdn.net/yuanchenglei/article/details/121316243