这些看起来很简单,但是我可能无法通过它进行搜索。
我有一个这样的 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)
我怎么能对这个值求和呢?
谢谢你。
考虑到文件的第一行csv
是'Day,Event,Value'
,您可以使用generator expression
withsum()
>>> cr = csv.reader(open("file.csv","rb"))
>>> cr.next()
>>> print sum(int(x[2]) for x in cr)
1500
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
有更简洁的方法(例如,列表理解或生成器表达式)可以做到这一点,但这提供了基本思想,还允许您根据需要对每一行执行其他操作(正如@MarkRansom 所指出的那样)
创建一个垃圾值并读取前 2 个值并“丢弃”它们,然后在读取第三个值时将其添加到您的总和中。不要忘记,最初您需要忽略文件的前 3 个值,因为它会获取标题。
鉴于“值”在第 2 列中,您可以执行以下简单的 for 循环:
value_sum=0
for row in cr:
value_sum += row[2]
或者,如果您理解它,您可以使用理解:
value_sum = sum([row[2] for row in cr])