在CSV中找到的匹配总和

时间:2014-10-03 04:13:45

标签: python csv

我的csv数据看起来像:

17860   1 
17861   1 
17861   2 
17861   1 
17861   1 
17861   1 
17862   1 
17863   1 
17863   1 
17863   1 

我的目标是让输出显示左栏的匹配总和,以获得如下结果:

17860    1
17861    6
17862    1
17863    3

我遇到的问题是如何存储5位数字并将其与列中的其余数据进行比较,然后捕获单个数字以获得总和。

2 个答案:

答案 0 :(得分:4)

您可以利用Hash(在Python中称为Dictionary)数据结构。读取您的文件并将第一列编号存储为键,将第二列编号存储为值。如果您发现密钥已存在,则将当前值添加到上一个密钥,或者添加新密钥。

hash = {}
for line in file:
    key, value = map(int, line.split())
    if key in hash:
        hash[key] += value
    else:
        hash[key] = value

答案 1 :(得分:0)

awk '{ sum[$1] += $2 } END { for (i in sum) print i, sum[i] }' t.txt
17862 1
17863 3
17860 1
17861 6

或者可能更具可读性,将其放在一个文件中chmod +x并将其作为程序运行:

#!/usr/bin/awk -f

{
  sum[$1] += $2
}

END {
  for (i in sum)
    print i, sum[i]
}