并非所有类别都存在时的虚拟变量
问题内容:
我有一组数据框,其中的一列包含分类变量。我想将其转换为几个虚拟变量,在这种情况下,我通常会使用get_dummies
。
发生的情况是get_dummies
查看每个数据框中的可用数据以找出有多少类别,从而创建适当数量的虚拟变量。但是,在我现在正在解决的问题中,我实际上实际上预先知道了可能的类别。但是,当单独查看每个数据框时,不一定会出现所有类别。
我的问题是:是否有一种方法可以传递get_dummies
(或等效功能)类别名称,以便对于未出现在给定数据框中的类别,仅创建一个0列?
可能导致的结果:
categories = ['a', 'b', 'c']
cat
1 a
2 b
3 a
成为这个:
cat_a cat_b cat_c
1 1 0 0
2 0 1 0
3 1 0 0
问题答案:
使用转置和重新索引
import pandas as pd
cats = ['a', 'b', 'c']
df = pd.DataFrame({'cat': ['a', 'b', 'a']})
dummies = pd.get_dummies(df, prefix='', prefix_sep='')
dummies = dummies.T.reindex(cats).T.fillna(0)
print dummies
a b c
0 1.0 0.0 0.0
1 0.0 1.0 0.0
2 1.0 0.0 0.0