我有一组数据框架,其中一个列包含分类变量。我希望将其转换为多个虚拟变量,通常我会使用get_dummies
来实现。
然而,get_dummies
会查看每个数据框架中的数据,以确定有多少个类别,从而创建相应数量的虚拟变量。但在当前我处理的问题中,我事先已经知道可能的类别有哪些。然而,当单独查看每个数据框架时,并不一定所有类别都会出现。
我的问题是:是否有办法向get_dummies
(或类似功能的函数)传递类别的名称,以便对于在某个数据框架中未出现的类别,它会创建一个全为0的列?
例如,将这个:
categories = ['a', 'b', 'c'] cat1 a2 b3 a
转换成这样:
cat_a cat_b cat_c1 1 0 02 0 1 03 1 0 0
回答:
使用转置和重新索引
import pandas as pdcats = ['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 c0 1.0 0.0 0.01 0.0 1.0 0.02 1.0 0.0 0.0