我有一個包含 3 個值的 DataFrame 列 - Bart、Peg、Human。我需要對它們進行一次熱編碼,以使 Bart 和 Peg 保持為列,而人類表示為 0 0。
Xi | Architecture
0 | Bart
1 | Bart
2 | Peg
3 | Human
4 | Human
5 | Peg
..
.
我想對它們進行一次熱編碼,以便將 Human 表示為 0 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。有沒有辦法指定要洗掉的列?
uj5u.com熱心網友回復:
你可以mask:
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
uj5u.com熱心網友回復:
IIUC,嘗試使用 get_dummies 然后洗掉“人類”列:
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
uj5u.com熱心網友回復:
它正在洗掉“Bart”,因為這是它看到的“第一個”標簽。
get_dummies沒有內置的方式來說“之后洗掉此列”。這很煩人。所以你可以做一些事情:
- 在使用之前對資料集進行排序,
get_dummies以便在使用時首先顯示“人類”drop first - 將資料集子集以僅對其中的列進行一次熱編碼(架構 =“Bart”或“Peg”)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/439397.html
