【发布时间】:2020-07-10 02:49:50
【问题描述】:
我正在尝试使用 Pandas 读取 csv 文件。但是在使用 pd.read_csv 时,我得到一个 ValueError: Length mismatch: Expected axis has 7 个元素,新值有 5 个元素。
代码如下:
# load train data
data = pd.read_csv('training1.6.csv',error_bad_lines=False , encoding='iso-8859-1',low_memory=False)
data.columns = ['label','id','date','user','text']
data.head(2)
这是回溯:
ValueError Traceback (most recent call last)
<ipython-input-5-21e4215846cd> in <module>()
1 data = pd.read_csv('training1.6.csv',error_bad_lines=False , encoding='iso-8859-1')
----> 2 data.columns = ['label','id','date','user','text']
3 data.head(2)
2 frames
pandas/_libs/properties.pyx in pandas._libs.properties.AxisProperty.__set__()
/usr/local/lib/python3.6/dist-packages/pandas/core/internals/managers.py in set_axis(self, axis, new_labels)
181 raise ValueError(
182 "Length mismatch: Expected axis has {old} elements, new "
--> 183 "values have {new} elements".format(old=old_len, new=new_len)
184 )
185
ValueError: Length mismatch: Expected axis has 7 elements, new values have 5 elements
我尝试了 dtype 和 low_memory 但无济于事。有人可以帮帮我吗?
【问题讨论】:
-
你检查过
data.shape给你的东西吗? -
----> 2 data.columns = ['label','id','date','user','text'],你的错误在:
data.columns = ['label','id','date','user','text'],试试:data.columns = ['label','id','date','user','text', 'other1', 'itworks!'] -
@ansev 非常感谢。有效。您能否澄清导致问题的原因。为什么添加两个空列可以解决错误?
-
因为,正如错误所说,
ValueError: Length mismatch: Expected axis has 7 elements, new values have 5 elements.. -
ValueError: Length mismatch: Expected axis has 7 elements, new values have 5 elements您有一个包含 7 列的数据框,每列都有一个名称,您正在尝试更改列的名称,因此如果您指定一个列表,则必须指定一个包含 7 列的列表名字而不是 5