用虚拟变量为数值创建固定大小的数据帧

我必须为可能有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将用零填充所有缺失的列。

您可以insertconcat添加原始列到结果 -

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

回到顶部