我必须为可能有16个值(0-15)的列创建虚拟变量,但是当我根据它创建虚拟变量时,不必具有所有16个值:
my_column
0 3
1 4
2 7
3 1
4 9
我希望我的虚拟变量有16列或更多 - 提前由我修复的任何其他值,列名称中的数字对应my_column
的值,但如果my_column只有,让我们说,来自16个可能值的5个值,方法pd.get_dummies
将只创建5列(如此方法所预期的那样),如下所示:
my_column 1 3 4 7 9
0 3 0 1 0 0 0
1 4 0 0 1 0 0
2 7 0 0 0 1 0
3 1 1 0 0 0 0
4 9 0 0 0 0 1
如何实现以下结果之一?
my_column 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 4 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
2 7 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
3 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 9 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
答案 0 :(得分:3)
在列上使用get_dummies
+ reindex
-
v = pd.get_dummies(df.my_column).reindex(columns=range(0, 16), fill_value=0)
根据文档,reindex
将 -
使用可选的填充逻辑将DataFrame符合到新索引 NA / NaN在前一个索引中没有值的位置。
fill_value=0
会用零填充所有缺失的列。
您可以使用insert
或concat
-
v.insert(0, 'my_column', df.my_column)
v = pd.concat([df, v], 1) # alternative to insert
v
my_column 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
1 4 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
2 7 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
3 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 9 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0