我的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位数字并将其与列中的其余数据进行比较,然后捕获单个数字以获得总和。
答案 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]
}