用虚拟变量为数值创建固定大小的数据帧
我必须为可能有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
回答:
使用get_dummies
+ reindex
上的列 -
v = pd.get_dummies(df.my_column).reindex(columns=range(0, 16), fill_value=0)
根据该文档,reindex
将 -
顺应数据帧到具有可选的填充逻辑新的索引,将 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
以上是 用虚拟变量为数值创建固定大小的数据帧 的全部内容, 来源链接: utcz.com/qa/263433.html