使用虚拟变量为数值创建固定大小的数据框
Create dataframe of fixed size with dummy variables for numerical values
我必须为可能有 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
将 -
Conform DataFrame to new index with optional filling logic, placing
NA/NaN in locations having no value in the previous index.
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
我必须为可能有 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
将 -
Conform DataFrame to new index with optional filling logic, placing NA/NaN in locations having no value in the previous index.
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