使用csv reader上传时出错:

时间:2013-06-06 20:46:06

标签: python csv

我正在尝试使用python进行一些数据操作和分析。我是python的新手,我在使用csv函数库加载数据时遇到了一些麻烦。我的代码:

import csv

out = open("data1.csv","rb")
data = csv.reader(out)
data = [row for row in data]
x = data[:,0]

产生错误:

Traceback (most recent call last):
  File "/home/matthew/NumericalAnalysis.py", line 12, in <module>
    x = data[:,0]
TypeError: list indices must be integers, not tuple

根据我的理解,这可能部分是由于列表被保存为字符串而不是浮点数。如果是这样,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

您不能在索引中使用逗号。如果您需要来自数据或切片的元素,请按以下步骤操作:

x = data[:4]
x = data[2]

答案 1 :(得分:2)

您正在将一个元组传递给data切片:

data[:,0]

逗号使:,0成为一个元组,尽管这个元组无法独立存在。它是合法的Python语法,但它被称为extended slice。 Numpy为矩阵支持这些,但是常规的python列表不支持。

如果要选择所有行的所有第一个列(这是扩展切片对numpy二维矩阵的作用),请在阅读CSV时执行此操作:

data = [row[0] for row in data]

这将选择csv.reader()对象提供的每一行的第一列。

相关问题