在Python中添加CSV列中的所有值

时间:2012-05-18 18:33:36

标签: python csv

这些似乎非常简单,但搜索我可能无法超越它。

我有一个像这样的CSV文件:

Day,Event,Value
1,"Rent",500
7,"Wage Payments",1000

我希望将“值”列中的所有数字相加。到目前为止,我的代码是:

cr = csv.reader(open("file.csv","rb"))

for row in cr:    
    print row

#print sum(Value)

我怎么能总结这个价值?

谢谢。

4 个答案:

答案 0 :(得分:10)

考虑到csv文件的第一行是'Day,Event,Value',您可以generator expression使用sum()

>>> cr = csv.reader(open("file.csv","rb"))
>>> cr.next()
>>> print sum(int(x[2]) for x in cr)
1500

答案 1 :(得分:3)

cr = csv.reader(open("file.csv","rb"))
cr.next() # to skip the header 

total = 0
for row in cr:  
   total += int(row[2])
   # possibly do other things with data/rows 

print total

有更多简洁的方法(例如,list comprehension或生成器表达式)来执行此操作,但这提供了基本的想法,并且还允许您根据需要对每行执行其他操作(如@MarkRansom所指出的)太)

答案 2 :(得分:0)

制作垃圾值并读入前2个值并“删除”它们然后在读取第3个值时将其添加到您的总和中。不要忘记,最初你需要忽略文件的前3个值,因为它会拾取标题。

答案 3 :(得分:0)

鉴于“值”在第2列中,您可以执行以下简单的for循环:

value_sum=0
for row in cr:
    value_sum += row[2]

或者,如果您理解,您可以使用理解:

value_sum = sum([row[2] for row in cr])