在csv文件中添加具有相同键功能的列

时间:2013-07-24 16:38:51

标签: python shell csv programming-pearls

列包括两个关键特征,一列总结,另一些(例如1)列不重要。

key1, key 2, pr, trivial    
abc, 43, 23, haha    
abc, 43, 456, hok    
bcd, 23, 89,kol

我想使用SAME key1和key2添加sum列,并输出一个包含3列的csv文件。

key1, key2, sumvalueofpr

在上述情况下,它是

key1, key2, sumvalueofpr
abc , 43, 479
bdc, 23, 89

(注意:479=23+456

使用Perl或Shell命令是可以的。

2 个答案:

答案 0 :(得分:0)

是否只有key1 / key2对的特定值,或者您想检查任何可能的匹配?

你可以尝试一种性能较低(但易于编码)的方法,你可以尝试这样的方法:

for i in range(0,number_of_rows):
   for j in range(i+1, number_of_rows):
        if (key1_from_row_i == key1_from_row_j) and (if (key1_from_row_i == key1_from_row_j)):
             increment your sum of key1_sum key2_sum

答案 1 :(得分:0)

如果您接受了awk,则此单行为您提供预期输出:

awk -F, -v OFS=", " 'NR==1{print "key1","key2","sum";next}{a[$1", "$2]+=$3}END{for(x in a)print x,a[x]}' file