それは少し厄介ですが、あなたはあなたが「didnのドキュメントのすべての値
import csv
import collections
name_sum = collections.defaultdict(int)
docs_for_name = collections.defaultdict(list)
with open("csv1.csv") as csvfile:
csvreader = csv.reader(csvfile)
for row in csvreader:
name_sum[row[1]] += int(row[2])
docs_for_name[row[1]].append(row[0])
with open("outputcsv.csv", "w", newline="") as csvfile:
csvwriter = csv.writer(csvfile)
for key in sorted(name_sum.keys()):
row = [", ".join(sorted(docs_for_name[key])), key, str(name_sum[key])]
print(row)
csvwriter.writerow(row)
の合計を維持するために、すべてそれぞれの人のためのドキュメントや他のトラックを保持するために、2つのdefaultdicts、いずれかを使用することができます
:
doc_01,Bob,5
doc_03,Sam,1
doc_04,Bob,1
これは以下のようにcsvファイルを出力し終わる:トンcsvファイルをExcelなどのエディタでのように見えるので、私はあなたのcsvファイルを仮定していることは、このように見えるだけで何、実際のcsvファイルを投稿
"doc_01, doc_04",Bob,6
doc_03,Sam,1
それはすべてを追跡するために
defaultdict(<class 'int'>, {'Bob': 6, 'Sam': 1})
そして、他のdefaultdictのように見える終わるように、第1 defaultdict、name_sum
だけで、それぞれの名前のすべての値のために合計を追跡します名前のためのドキュメント、docs_for_name
はのように見える終わる:次に、あなたが書くために必要なすべての情報を持っている
defaultdict(<class 'list'>, {'Bob': ['doc_01', 'doc_04'], 'Sam': ['doc_03']})
新しいcsvファイルの各行