我有一个csv文件,我试图绘制一些内容,并需要将字符串转换为浮点数。我的问题如下:
当我运行下面的代码时,
with open('meteors.csv', 'rU') as csvfile:
reader=csv.reader(csvfile)
for row in reader:
print row[6]
我得到了这个输出:
58.58333
当我改为尝试
时print type(row[6])
我得到了这个输出:
<type 'str'>
但是当我尝试
时 print float(row[6])
我收到此错误:
ValueError: could not convert string to float: coordinate_1
任何人都知道发生了什么事吗?
答案 0 :(得分:4)
您很可能会看到第一行,其中包含CSV文件中的列标题,而coordinate_1
是标题。
您可以跳过第一行:
with open('meteors.csv', 'rU') as csvfile:
reader=csv.reader(csvfile)
reader.next() # skips the first (header) row
for row in reader:
print row[6]
或者,使用DictReader
,如下所示:
with open('meteors.csv', 'rU') as csvfile:
reader=csv.DictReader(csvfile)
for row in reader:
print row['coordinate_1']
答案 1 :(得分:2)
您的CSV文件可能有一个标题,列出了每列的名称。您无法将这些名称转换为float
s,因此这就是您的错误来源。
您必须首先使用标题:
with open('meteors.csv', 'rU') as csvfile:
reader = csv.reader(csvfile)
header = next(reader)
for row in reader:
print float(row[6])