加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

在python中汇总一个csv列

发布时间:2020-12-16 22:55:02 所属栏目:Python 来源:网络整理
导读:我正在尝试在csv文件中创建一个列的总和.该文件看起来像: Date Value2012-11-20 122012-11-21 102012-11-22 3 这可以在数百行的范围内.我需要在终端上打印出的总值(在这种情况下它将是25).到目前为止,我有一些代码,但它导致的数字要小得多.在对其进行故障排
我正在尝试在csv文件中创建一个列的总和.该文件看起来像:
Date  Value
2012-11-20  12
2012-11-21  10
2012-11-22  3

这可以在数百行的范围内.我需要在终端上打印出的总值(在这种情况下它将是25).到目前为止,我有一些代码,但它导致的数字要小得多.在对其进行故障排除时,我进行了总和的打印,并意识到它实际上打破了每列中的数字并且总和为1 2 1 0 3,而不是总和12 10 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

解决方法

csv模块逐个循环遍历您的行,因此无需在列上循环.只是总和int(行[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中,字符串也是序列,所以当您在第[1]行中执行col时:您正在遍历row [1]的各个字符;所以你的第一行是1和2:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读