Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将列值转换为ID为的列_Python_Dictionary_Datatables_Multiple Columns - Fatal编程技术网

Python 将列值转换为ID为的列

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}}} 谢谢 假设您以元组

给定一个具有给定值的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输出,同时跟踪集合中的唯一类型,最后在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
方法,使用一行程序(不一定是最可读的方式)来实现这一点。这暗示够了吗?对不起,我应该说明的。该表是一个数据帧。