从CSV文件中获取2列中的数据。检查条目是否相同并添加货币金额

时间:2014-10-30 09:43:34

标签: python python-2.7 csv count

我有一个包含以下数据的data.CSV文件

  

column1,column2,amount,column3

     

NAME1,empId1,的 34.12 下,241682-27638-CIGGNT

     

NAME2,empId2,的 22.14 下,241682-27638-OCGGINT

     

NAME3,empId3,的 18.98 下,241942-37190-GGDIV

     

NAME4,empId4,的 8.98 下,241942-37190-GGDIV

     

NAME5,empId5,的 234.098 下,241942-37190-CHYOF

粗体条目是货币金额。我想将 column3 金额条目添加到python中的字典中。但是如果第3列中的条目重复它应该添加货币金额并将其插入字典。

输出应如下所示。

  {'241682-27638-CIGGNT':'34.12','241682-27638-OCGGINT':'22.14','241942-37190-GGDIV':'27.92','241942-37190-CHYOF':'234.098'}

我试过以下代码,但它只是更新(覆盖货币金额)上一个条目(而不是将其添加到之前的金额)

import csv

path = "file_path"

file=open( path +"data.CSV", "r")
reader = csv.reader(file)

counterlist = {}

for row in reader :

    #print row[3]
    #print row[2]
    if counterlist.has_key(row[3]):

        row[2]+=row[3].value
        counterlist.update({row[3]:row[2]})

     else:
         counterlist.update({row[3]:row[2]})

print counterlist

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用defaultdict

from collections import defaultdict

# ...

counterlist = defaultdict(float)
for row in reader:
    counterlist[row[3]] += float(row[2])