我正在尝试在python中读取一个csv文件,这样我就可以使用numpy.average找到其中一列中的值的平均值。 我的脚本看起来像这样:
import os
import numpy
import csv
listing = os.listdir('/path/to/directory/of/files/i/need')
os.chdir('/path/to/directory/of/files/i/need')
for file in listing[1:]:
r = csv.reader(open(file, 'rU'))
for row in r:
if len(row)<2:continue
if float(row[2]) <=0.05:
avg = numpy.average(float(row[2]))
print avg
但我继续得到错误ValueError:float()的文字无效。 csv阅读器似乎是将数字作为字符串读取,并且不允许我将其转换为浮点数。有什么建议吗?
答案 0 :(得分:2)
根据评论判断,您的程序遇到了标题问题。
这两个解决方案是在r.next()
循环之前使用for
跳过一行,或者使用DictReader
类。 DictReader
类的优点是您可以将每一行视为字典而不是元组,这可能会在某些情况下提高可读性,但您必须在构造函数中将标题列表传递给它
答案 1 :(得分:0)
变化:
float(row[2])
为:
float(row[2].strip("'\""))