2017-05-04 97 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__'