Python 将列值转换为ID为的列
给定一个具有给定值的dataframe表,我想将其转换为另一个表和字典Python 将列值转换为ID为的列,python,dictionary,datatables,multiple-columns,Python,Dictionary,Datatables,Multiple Columns,给定一个具有给定值的dataframe表,我想将其转换为另一个表和字典 dict = {{a:{x:1, y:2, z:0}},{b:{x:1,y:2,z:0}}} 将其转换为: 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}}} 谢谢 假设您以元组
dict = {{a:{x:1, y:2, z:0}},{b:{x:1,y:2,z:0}}}
将其转换为:
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}}}
谢谢 假设您以元组列表的形式加载表,请使用集合。计数器来计算每个元组的出现次数,然后将其转换为所需的dict输出,同时跟踪集合中的唯一类型,最后在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}}
您可以使用以下选项:
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}}
“表格”的格式是什么?到目前为止你试过什么?您可以使用嵌套的字典理解和
count
方法,使用一行程序(不一定是最可读的方式)来实现这一点。这暗示够了吗?对不起,我应该说明的。该表是一个数据帧。