【问题标题】:TypeError: list indices must be integers or slices, not tupleTypeError:列表索引必须是整数或切片,而不是元组
【发布时间】:2017-10-02 22:24:10
【问题描述】:

fvecs = []

for line in open(filename):
    stats = line.split(',')
    labels.append(int(stats[0]))
    fvecs.append([float(x) for x in stats[5,6,12,27,29,37,39,41]])

我有一个很大的 csv。我用作包含 43 列和数百行的数据集的文件,我试图提取特定列以用作单独的记录,但我似乎无法解决这个问题。该错误是由最后一行代码引起的,并在标题中产生错误消息,当范围设置为时,它可以正常工作,例如 stats[30:38]。

我尝试将所需的列存储在单独的数组中,并像 stats[requiredcolumns] 一样调用它,但这会产生相同的错误。

我曾考虑过使用 pandas,但这只是来自一个更大程序的一小段代码,所有功能都正确,并且 pandas 的实现需要对整个程序进行彻底检查,这是不可能的,因为时间限制。

任何帮助将不胜感激

【问题讨论】:

标签: python csv numpy


【解决方案1】:

如果你的列很少,你可以试试这个:

for line in open(filename):
    stats = line.split(',')
    labels.append(int(stats[0]))
    fvecs.append([float(x) for x in stats[5],stats[6],stats[12],stats[27], stats[29], stats[37], stats[39], stats[41]])

此代码将返回列表列表;否则,关于索引和 NumpPy 的第一条评论是正确的。

【讨论】:

  • indices = [5, 6, 12, 27, 29, 37, 39, 41]; fvecs.append([float(stats[index]) for index in indices]) 将为您节省大量的输入,并且更容易扩展到任意多列。
猜你喜欢
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 2016-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多