python - 将虚拟变量值从 1 更改为列名,然后创建一个可以比较行的列表
问题描述
我有一个看起来像这样的数据框:
A B C
1 0 0
1 1 0
0 1 0
0 0 1
我想用相应的列名替换所有值,以便数据如下所示:
A B C
A 0 0
A B 0
0 B 0
0 0 C
之后,我想创建一个列,它是所有列值的列表,如下所示:
A B C D
A 0 0 ['A','0','0']
A B 0 ['A','B','0']
0 B 0 ['0','B','0']
0 0 C ['0','0','C']
最后,我想按 D 列分组并计算每个模式的出现次数。
解决方案
你可以做mul
df.mul(df.columns).replace('',0)
Out[63]:
A B C
0 A 0 0
1 A B 0
2 0 B 0
3 0 0 C
#df['D']=df.mul(df.columns).replace('',0).values.tolist()