如何在 pandas 中的 get_dummies 中指定要删除的列
How to specify which column to remove in get_dummies in pandas
我有一个包含 3 个值的 DataFrame 列 - Bart、Peg、Human。我需要对它们进行一次性编码,以便 Bart 和 Peg 保留为列,而人类表示为 0 0。
Xi | Architecture
0 | Bart
1 | Bart
2 | Peg
3 | Human
4 | Human
5 | Peg
..
.
我想对它们进行单热编码,以便将人类表示为 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 个。有没有办法指定要删除的列?
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
你可以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
它正在删除“Bart”,因为这是它看到的“第一个”标签。
get_dummies
没有内置的方式来表示“在之后删除此列”。这很烦人。
所以你可以做一些事情:
- 在使用
get_dummies
之前对数据集进行排序,以便在您使用 drop first
时首先显示“人类”
- 将数据集子集化为仅one-hot-encode列(架构=“Bart”或“Peg”)
我有一个包含 3 个值的 DataFrame 列 - Bart、Peg、Human。我需要对它们进行一次性编码,以便 Bart 和 Peg 保留为列,而人类表示为 0 0。
Xi | Architecture
0 | Bart
1 | Bart
2 | Peg
3 | Human
4 | Human
5 | Peg
..
.
我想对它们进行单热编码,以便将人类表示为 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 个。有没有办法指定要删除的列?
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
你可以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
它正在删除“Bart”,因为这是它看到的“第一个”标签。
get_dummies
没有内置的方式来表示“在之后删除此列”。这很烦人。
所以你可以做一些事情:
- 在使用
get_dummies
之前对数据集进行排序,以便在您使用drop first
时首先显示“人类”
- 将数据集子集化为仅one-hot-encode列(架构=“Bart”或“Peg”)