给出一个具有给定值的数据框表,我想将其转换为另一个表和字典。
转换此:
id type
a x
a y
a y
b z
对此:
id x y z
a 1 2 0
b 0 0 1
以表格格式和字典。
dict = {{a:{x:1, y:2, z:0}},{b:{x:1,y:2,z:0}}}
谢谢!
答案 0 :(得分:0)
假设您将表格作为元组列表加载,请使用collections.Counter
计算每个元组的出现次数,然后将其转换为所需的dict输出,同时继续跟踪集合中的唯一类型,最后用字典中的零填充每个id中缺少的类型键。
from collections import Counter
l = [('a', 'x'), ('a', 'y'), ('a', 'y'), ('b', 'z')]
d = {}
k = set()
for t, c in Counter(l).items():
d.setdefault(t[0], {})[t[1]] = c
k.add(t[1])
for v in d.values():
for m in k.difference(v):
v.update({m: 0})
print(d)
这将输出:
{'a': {'x': 1, 'y': 2, 'z': 0}, 'b': {'z': 1, 'x': 0, 'y': 0}}
答案 1 :(得分:0)
您可以使用此:
pd.get_dummies(df1.set_index('id'),
columns=['type'],
prefix='', prefix_sep='')\
.sum(level=0)\
.to_dict(orient='index')
输出:
{'a': {'x': 1, 'y': 2, 'z': 0}, 'b': {'x': 0, 'y': 0, 'z': 1}}