Python TypeError:列表索引必须是整数或切片,而不是元组

Python TypeError:列表索引必须是整数或切片,而不是元组,python,csv,numpy,Python,Csv,Numpy,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]]) 我有一个大问题。我正在使用的文件作为包含43列和数百行的数据集,我试图提取特定列作为单个记录使用,但我似乎无法解决这个问题。该错误是由最后一行代码引起的,并在标题中生成

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

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

我曾考虑过使用pandas,但这只是一个大得多的程序中的一小段代码,所有程序都能正常运行,pandas的实现需要对整个程序进行彻底的检查,但由于时间限制,这是不可能的


任何帮助都将不胜感激

如果您没有多少专栏,您可以尝试以下方法:

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]])

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

stats
只是一个列表,而不是Numpy数组。作为一个列表,它不支持Numpy的高级索引功能。如果stats中的所有项都是数字,那么在尝试高级索引之前,可以先将其转换为Numpy数组。即便如此,您用于索引的语法也不会像这样工作。不幸的是,它们并不都是数字,所以您认为这不会像现在这样工作?这是否回答了您的问题<代码>指数=[5,6,12,27,29,37,39,41];append([float(stats[index])用于索引中的索引])将为您节省大量键入,并且更容易扩展到任意多个列。