Python 如何以特定的方式转换我的数据帧?

Python 如何以特定的方式转换我的数据帧?,python,python-3.x,pandas,dataframe,dictionary,Python,Python 3.x,Pandas,Dataframe,Dictionary,我有一个数据帧,每个列中都有所有二进制值: col1 col2 col3 1 0 1 1 0 1 1 1 1 0 0 0 1 0 0 我想将每一行转换为一个集合,其中列名作为键,值作为值。因此,预期结果必须如下所示: [{'col1:1', 'col2:0', 'col3:1'}, {'col1:1', 'col2:0', 'col3:1'}, {'c

我有一个数据帧,每个列中都有所有二进制值:

col1    col2   col3  
1         0      1
1         0      1
1         1      1
0         0      0
1         0      0
我想将每一行转换为一个集合,其中列名作为键,值作为值。因此,预期结果必须如下所示:

[{'col1:1', 'col2:0', 'col3:1'},
{'col1:1', 'col2:0', 'col3:1'},
{'col1:1', 'col2:1', 'col3:1'},
{'col1:0', 'col2:0', 'col3:0'},
{'col1:1', 'col2:0', 'col3:0'}]
我该怎么做呢?

只要做:

res = [{f'{k}:{v}' for k, v in d.items()} for d in df.to_dict('records')]
print(res)
输出

[{'col1:1', 'col3:1', 'col2:0'}, {'col1:1', 'col3:1', 'col2:0'}, {'col1:1', 'col3:1', 'col2:1'}, {'col2:0', 'col1:0', 'col3:0'}, {'col1:1', 'col2:0', 'col3:0'}]

如果您想继续使用熊猫,可以
radd
字符串,然后应用set。(可能是由于应用过多而速度过慢)


df.to_dict('records')
?@danimesjo no,它将给出[{'col1':1,'col2':0,'col3':1}apostrophe@ALollz是的,对。我编辑了这个问题,它设定好了
df.astype(str).radd(':').radd(df.columns).apply(set, axis=1).tolist()
[{'col1:1', 'col2:0', 'col3:1'},
 {'col1:1', 'col2:0', 'col3:1'},
 {'col1:1', 'col2:1', 'col3:1'},
 {'col1:0', 'col2:0', 'col3:0'},
 {'col1:1', 'col2:0', 'col3:0'}]