如何在pandas中指定要在get_dummies中删除的列



我有一个DataFrame列,它有3个值——Bart、Peg、Human。我需要对它们进行一次热编码,使Bart和Peg保持为列,并将人表示为0。

Xi | Architecture
0  | Bart
1  | Bart
2  | Peg
3  | Human
4  | Human
5  | Peg
..
.

我想对它们进行一次热编码,使人类表示为0:

Xi |Bart| Peg
0  | 1  | 0
1  | 1  | 0
2  | 0  | 1
3  | 0  | 0
4  | 0  | 0
5  | 0  | 1

但当我这样做时:

pd.get_dummies(df['Architecture'], drop_first = True)

它删除";Bart";并保留另2个。有没有办法指定要删除的列?

您可以maskit:

df = df[['Xi']].join(pd.get_dummies(df['Architecture'].mask(df['Architecture']=='Human')))

输出:

Xi  Bart  Peg
0   0     1    0
1   1     1    0
2   2     0    1
3   3     0    0
4   4     0    0
5   5     0    1

IIUC,尝试使用get_dummies,然后删除"Human"列:

df['Architecture'].str.get_dummies().drop('Human', axis=1)

输出:

Bart  Peg
0     1    0
1     1    0
2     0    1
3     0    0
4     0    0
5     0    1

它正在下降"Bart";因为这就是";第一个";标签。CCD_ 2没有内置的方式来表示";将此列放在"之后;。这很烦人。所以你可以做一些事情:

  • 在使用CCD_ 3之前对数据集进行排序;"人";使用drop first时首先显示
  • 将数据集子集化为仅一个热编码列,其中(体系结构="Bart"或"Peg"(

最新更新