我想对数据中的一列执行一种热编码。该列可能如下所示:
app
0 a
1 b
2 c
3 a
我已经执行过:
pd.get_dummies(df, columns=['app'])
app_a app_b app_c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
但是实际上,应用程序列中可以包含'd'值,在我训练的数据中我没有它。因此,我要执行的是在执行app_d
之后在数据中不添加'd'值的情况下添加get_dummies
。
一个热编码可以将我上面的简单数据形成到预定义的列中吗?我想要的是这样的:
app_a app_b app_c app_d
0 1 0 0 0
1 0 1 0 0
2 0 0 1 0
3 1 0 0 0
答案 0 :(得分:1)
尝试将列转换为pandas.Categorical
dtype并指定categories
参数:
df['app'] = pd.Categorical(df['app'], categories=['a', 'b', 'c', 'd'])
pd.get_dummies(df['app'], prefix='app')
[出]
app_a app_b app_c app_d
0 1 0 0 0
1 0 1 0 0
2 0 0 1 0
3 1 0 0 0
或者,您可以转换为Categorical
类型,然后使用cat.add_categories
访问器方法在发生以下情况后更新categories
:
df['app'] = pd.Categorical(df['app'])
df['app'].cat.add_categories(['d'], inplace=True)