我有一个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不会。
关于如何开始的任何想法?
答案 0 :(得分: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
。
然后,我从你的数据中取出第二列,剥离'$',删除逗号,然后转换为浮点数。
然后,因为我们正在构建一个字典,我们必须测试我们是否已经看过一个小狗,或者其他什么。如果是这样,只需添加到以前的值;如果没有,请设置值。