所以首先我的代码没有工作,因为我是一个字符串,显然你不能这样做。然后我改变了#34; a"在打印平均值时进入浮点数。但是现在我收到了这个错误,我真的不确定。这段背景信息代码是从CSV文件中提取数据,分数为3列,我试图找到平均值。但是,CSV文件都是字符串,并且您不能将整数作为CSV文件中的值。所以任何帮助都会非常感激。
这是我的csv文件: 卡勒姆,2,0,2
这是我的代码:
with open("Class1.csv") as f:
columns = f.readline().strip().split(" ")
numRows = 0
sums = [1] * len(columns)
for line in f:
# Skip empty lines
if not line.strip():
continue
values = line.split(" ")
for i in range(1,len(values)):
sums[i] += int(values[i])
numRows += 1
for index, a in enumerate (str(sums)):
print (columns[index], 1.0 * float(a) / numRows)
答案 0 :(得分:1)
查看float(a)
,我可以看到a
与str(sums)
有关。进一步查看,sums
是包含重复的整数1的列表。所以:
>>> sums = [1, 1, 1, 1, 1]
>>> d = str(sums)
>>> d
'[1, 1, 1, 1, 1]'
>>> type(d)
<type 'str'>
>>> d[0]
'['
>>> float(d[0])
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
float(d[0])
ValueError: could not convert string to float: [
问题在于您正在执行str(sums)
,它会为您提供包含列表结构的字符串字符表示的字符串...包括用于指示列表的[]
。这就是您收到错误的原因。
最后,请注意,虽然Python是动态类型的,但它也是强类型。它不会像'5' * 2
那样进行隐式类型转换。在尝试乘法之前,必须明确地将字符串值设为整数。