0

我有一个 CSV 文件,其中包含以下方式的数据

"/file/Puppies";"$2,166.74";"2,502";"5.55%";"$48.10";"152,844";"45,044"
"/file/Kittens";"$1,498.59";"1,618";"3.54%";"$32.75";"157,560";"45,764"
"/file/Puppies/pup";"$1,174.92";"1,451";"3.72%";"$30.10";"116,268";"39,038"

如果第一列相似,我想合并第二列,其余的值无关紧要。

因此,在示例中,第 2 列中的/file/Puppies/file/Puppies/pup值将在最终输出中相加。

相似是指例如/file/Puppies/, /file/Puppies/1,/file/Puppies/ru都是相似的。但 /file/Kittens 不会。

关于如何开始的任何想法?

4

1 回答 1

0

构造一个字典来保存值,然后将每一行添加到每个字典值

Values = {}
from csv import reader
with open('CSVFile.csv', 'r') as filehandle :
    reader = reader(filehandle,delimiter=';')
    for row in reader :
        Class = row[0].split('/')[2]
        Value = float(row[1].strip('$').replace(',', ''))
        if Class in Values :
            Values[Class] = Values[Class] + Value
        else :
            Values[Class] = Value
print Values

在这里,我对“相似”的含义做了一些简化的假设——也就是说,我假设你的意思是 '/file/' 之后的第一件事,并一直持续到该字段的末尾或下一个 '/' . 这就是我所说的Class

然后,我通过从您的数据中取出第二列、去掉“$”、删除逗号并转换为浮点数来找到值。

然后,因为我们正在构建字典,所以我们必须测试我们是否已经看过 Puppy,或者其他什么。如果是这样,只需添加到以前的值;如果没有,请设置值。

于 2013-03-05T21:36:32.003 回答