我有一个数据集,其中有多个列需要进行独热编码。但是,由于这些列与相应的项目相关,因此我不想为每个列进行编码。我想要的是一组使用所有列的虚拟变量。请查看我的代码以获得更好的解释。
假设我的数据框看起来像这样:
In [103]: dum = pd.DataFrame({'ch1': ['A', 'C', 'A'], 'ch2': ['B', 'G', 'F'], 'ch3': ['C', 'D', 'E']})
In [104]: dum
Out[104]:
ch1 ch2 ch3
0 A B C
1 C G D
2 A F E
如果我执行pd.get_dummies(dum)
输出将会是
ch1_A ch1_C ch2_B ch2_F ch2_G ch3_C ch3_D ch3_E
0 1 0 1 0 0 1 0 0
1 0 1 0 0 1 0 1 0
2 1 0 0 1 0 0 0 1
然而,我想要得到的是这样的东西:
A B C D E F G
1 1 1 0 0 0 0
0 0 1 1 0 0 1
1 0 0 0 1 1 0
不要再用多列表示编码,例如ch1_A
和ch1_C
,我希望只有一组(A
,B
等),当列ch1
,ch2
,ch3
中的任何一个值出现时,该组的值为1
。
澄清一下,在我的原始数据集中,单个行不会包含相同的值(A、B、C ...)超过一次;它只会出现在其中一列中。