多列pandas get_dummies

我有一个包含多个列的数据集,我希望对其进行一次热编码。但是,我不想为每个编码都有编码,因为所说的列与所说的项目有关。我想要的是一组使用所有列的虚拟变量。请参阅我的代码以获得更好的解释。

假设我的数据框如下所示:

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_Ach1_C,我只希望有一组(AB,等等)与值1时任何在列中的值的ch1ch2ch3显示出来。

需要说明的是,在我的原始数据集中,单行不会多次包含相同的值(A,B,C …);它只会出现在其中一列上。

回答:

使用stackstr.get_dummies

dum.stack().str.get_dummies().sum(level=0)

Out[938]:

A B C D E F G

0 1 1 1 0 0 0 0

1 0 0 1 1 0 0 1

2 1 0 0 0 1 1 0

以上是 多列pandas get_dummies 的全部内容, 来源链接: utcz.com/qa/416011.html

回到顶部