我有一个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个。有没有办法指定要删除的列?
您可以mask
it:
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"(