【问题标题】:ValueError: Length mismatch: Expected axis has 7 elements, new values have 5 elementsValueError:长度不匹配:预期轴有 7 个元素,新值有 5 个元素
【发布时间】: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

标签: python pandas


【解决方案1】:

(您在使用pd.read_csv() 时没有收到该错误,但在下一个命令中。)

data 数据框(您从 .csv 文件构建)有 7 列,但在命令中

 data.columns = ['label','id','date','user','text']

您只提供了 5 个列标签。

添加缺少的两个,例如。 g.

data.columns = ['label', 'id', 'date', 'user', 'text', 'col_6', 'col_7']

【讨论】:

    【解决方案2】:

    将来要拆分的列中必须有一些不可用的值。例如。文本比以前具有更多种类的价值。如果您的列中有一些 null 或空,您最好返回数据框以 ch enc

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多