【问题标题】:Create dataframe of fixed size with dummy variables for numerical values使用虚拟变量为数值创建固定大小的数据框
【发布时间】:2017-12-18 12:44:43
【问题描述】:

我必须为可能有 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

【问题讨论】:

    标签: python pandas dataframe dummy-variable


    【解决方案1】:

    在列上使用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 将用零填充所有缺失的列。

    您可以使用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
    

    【讨论】:

    • 能否请您在回答中也解释一下 reindex ?
    • @COLDSPEED 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多