这些似乎非常简单,但搜索我可能无法超越它。
我有一个像这样的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)
我怎么能总结这个价值?
谢谢。
答案 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])