我以CSV格式获得了以下数据:
Date Name Color
12/11 Thomas Blue
12/31 Andy Black
12/21 Luise Red
12/41 Mark Blue
12/11 Ronda Black
12/11 Thomas Blue
12/21 Mark Green
12/11 Ronda Black
12/31 Luise Red
12/41 Luise Green
我想创建一个基于对的计数,从中调出一个数据透视表,如下所示。理想情况下也是CSV文件
Blue Black Red Green
Thomas 2
Andy 1
Luise 2 1
Mark 1 1
Ronda 1 1
我不完全确定如何解决这个问题。也不能使用熊猫。 :(
答案 0 :(得分:3)
您可以使用defaultdict
int
import csv, collections
counts = collections.defaultdict(lambda: collections.defaultdict(int))
colors = set()
with open("data.csv") as f:
reader = csv.reader(f, delimiter="\t")
next(reader) # skip first line
for date, name, color in reader:
counts[name][color] += 1
colors.add(color)
来存储颜色计数。
colors = list(colors)
print(colors)
for name in counts:
print(name + "\t" + "\t".join(str(counts[name][color]) for color in colors))
然后,打印不同颜色的计数(或写入CSV):
['Red', 'Blue', 'Green', 'Black']
Ronda 0 0 0 2
Thomas 0 2 0 0
Andy 0 0 0 1
Luise 2 0 1 0
Mark 0 1 1 0
结果(我会给你微调):
Ext.Panel