2017-05-04 93 views
1

我想计算一个csv文件中一个列的平均值。首先,我从.csv文件中读取一列并将其保存到列表中。接下来,当我试图让意味着它有一个错误我如何计算字符串列表的平均值?

TypeError: 'builtin_function_or_method' object has no attribute '__getitem__' 

我的代码是:

with open('XXXXXX.csv') as f: 
reader = csv.DictReader(f) 
for row in reader: 
    for (k,v) in row.items(): 
     columns_95[k].append(v) 
sVaR5 = columns_95['95%'] 
mean_95 = sum(sVaR5)/len(sVaR5) 

和我的CSV样子:

95%  99% 
1.225 2.332 
1.252 10.252 
2.336 4.213 
...  ... 

当我检查我的名单,产量['1.225','1.252','2.336']我想也许引号是我的代码有错误的原因。但如何解决它!谢谢!

+1

错误是因为'sum'后的方括号:'sum [sVaR5]'应该是'sum(sVaR5)' –

+0

是的,这个列表包含了需要转换为数字的字符串。 'sVaR5 = [float(x)for column_95 ['95%']]' –

+0

对不起,我的代码是'sum(sVaR5)'我的错误 –

回答

0

sum是一个函数。如果你想调用的函数sum的说法sVaR5,你需要写:

sum(sVaR5) 

如果您sVaR5是一个字符串列表,你可以将它们转换为浮动的总和:

sum(map(float, sVaR5)) 

如果你把sum[sVaR5],巨蟒试图调用__getitem__对象sum上,因此错误

'builtin_function_or_method' object has no attribute '__getitem__'