python中的csv列求和

2024-04-29 17:08:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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

Tags: 文件csv代码infordatevalue数字
1条回答
网友
1楼 · 发布于 2024-04-29 17:08:49

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

您可以对生成器表达式和内置函数使用快捷方式:

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'

相关问题 更多 >