在python中汇总一个csv列

前端之家收集整理的这篇文章主要介绍了在python中汇总一个csv列前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在csv文件中创建一个列的总和.该文件看起来像:
  1. Date Value
  2. 2012-11-20 12
  3. 2012-11-21 10
  4. 2012-11-22 3

这可以在数百行的范围内.我需要在终端上打印出的总值(在这种情况下它将是25).到目前为止,我有一些代码,但它导致的数字要小得多.在对其进行故障排除时,我进行了总和的打印,并意识到它实际上打破了每列中的数字并且总和为1 2 1 0 3,而不是总和12 10 3,这显然等于更小的总数.这是我的代码,如果有人可以提出建议会很棒!

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

解决方法

csv模块逐个循环遍历您的行,因此无需在列上循环.只是总和int(行[1]):
  1. with open("file.csv") as fin:
  2. headerline = fin.next()
  3. total = 0
  4. for row in csv.reader(fin):
  5. total += int(row[1])
  6. print total

您可以使用带有生成器表达式和sum()内置函数的快捷方式:

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

请注意,在Python中,字符串也是序列,所以当您在第[1]行中执行col时:您正在遍历row [1]的各个字符;所以你的第一行是1和2:

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

猜你在找的Python相关文章