总结在python CSV列(Sum a csv column in python)

2019-08-03 02:54发布

我试图做一个列的总和csv文件。 该文件是这样的:

Date  Value
2012-11-20  12
2012-11-21  10
2012-11-22  3

这可能是在数百行的范围。 我需要得到的合计值(在这种情况下,将25),印刷到一个终端。 我到目前为止有一些代码,但它导致小得多数字比它应该总结。 当故障排除它,我做总和的打印和意识到,代替求和12 + 10 + 3,它实际上打破在每列中的数字和款项1 + 2 + 1 + 0 + 3,这明显等于一个多小总。 这里是我的代码,如果有人能提出建议将是巨大的!

with open("file.csv")) as fin:
  headerline = fin.next()
  total = 0
  for row in csv.reader(fin):
    print col # for troubleshooting
    for col in row[1]:
      total += int(col)
  print total

Answer 1:

csv模块循环在你行一个接一个,没有必要再遍历列。 只是总和int(row[1])

with open("file.csv") as fin:
    headerline = fin.next()
    total = 0
    for row in csv.reader(fin):
        total += int(row[1])
    print total

您可以使用快捷键与发电机表达的sum()内置函数:

with open("file.csv") as fin:
    fin.next()
    total = sum(int(r[1]) for r in csv.reader(fin))

需要注意的是在Python中,字符串是序列太多,所以当你for col in row[1]:你是遍历的单个字符row[1] ; 所以对于你的第一行会是12

>>> for c in '123':
...     print repr(c)
...
'1'
'2'
'3'


文章来源: Sum a csv column in python
标签: python csv sum