2015-10-07 98 views
0

我正在嘗試編寫一個計算csv數據文件中值的總和的python程序。 csv文件只包含三列和三行包含數字數據。 csv數據文件如下所示:計算列中值的總和

Colum1,Colum2,Colum3 
1,2,3 
1,2,3 
1,2,3 

我有我的python代碼來計算總和的問題。不知怎的,它不計算Colum1的所有值的總和,而它只是打印的兩行/值「Colum1」

import csv 
file = open('data.csv') 
rows = csv.DictReader(file) 
for r in rows: 
    print sum([float(r['Colum1'])]) 

沒有想過如何解決這個問題呢?

謝謝!

回答

2

你應該總結所有行,而不僅僅是一個:

import csv 
with open('data.csv') as f: 
    rows = csv.DictReader(f) 
    print sum(float(r['Colum1']) for r in rows) 

而且,這是一個很好的做法,關閉打開的文件,該with .. as ..語法需要照顧這個

+0

我仍然沒有得到爲什麼語法: '對於r行: print sum(float(r ['Colum1']))'不起作用!你能解釋你的代碼是不同的嗎? 謝謝:) – MEhsan

+0

@MEhsan你分別對每個值應用'sum()',單個值的總和顯然是值本身。我的代碼在'Colum1'下的所有值上應用'sum()'一次,並給出你想要的輸出 – yurib

+0

如果我們不使用comprehensions,語法會給出不同的結果嗎?我的意思是在sum()外面有for循環'for row'給出錯誤的結果? 這就是你的建議? – MEhsan