【发布时间】:2018-01-18 05:09:47
【问题描述】:
我有像下面这样的inputs.csv
苹果 400
香蕉 401
芒果430
橙色 440
香蕉 401
橙色 440
芒果430
苹果 400
橙色 440
香蕉401
我想要像 output.csv 这样的输出
苹果 400 2
香蕉 401 3
芒果 430 2
橙色 440 3
即我们应该计算该特定类型的项目数并将计数插入第三列
我试过下面的代码
with open('new.csv','r') as csvinput:
with open('update.csv', 'w') as csvoutput:
writer = csv.writer(csvoutput)
reader = csv.reader(csvinput)
all = []
row = next(reader)
row.append("No.of.Rows")
all.append(row)
cn = Counter(map(itemgetter(0), reader))
for k, v in cn.items():
print("k compared is::",k)
with open('new.csv','r') as csvinput:
reader = csv.reader(csvinput)
for row in reader:
print("Executing inner loop")
print("row value compared is ::",row[0])
if k == row[0] :
print("matched")
row.append(v)
all.append(row)
break
writer.writerows(all)
使用此代码它可以工作,但我担心 new.csv 文件将被打开并读取 k 次,所以有没有比这更好的解决方案
【问题讨论】:
-
我不知道你的代码要做什么,但是用一个键
(row[0], row[1])制作一个字典,值是row[2]的总和,你可以一次完成所有事情. -
用
csvinput.readlines()将文件一读入列表
标签: python python-3.x python-2.7