【问题标题】:how to do one hot encoding to predefined column [duplicate]如何对预定义的列进行一种热编码[重复]
【发布时间】:2019-09-24 01:30:28
【问题描述】:

我想对数据中的一列执行一次热编码。该列可能如下所示:

    app   
0   a       
1   b      
2   c      
3   a    

我已经完成了:

pd.get_dummies(df, columns=['app'])
    app_a   app_b   app_c
0     1        0    0
1     0        1    0
2     0        0    1
3     1        0    0

但实际上,app 列可以包含“d”值,在我的训练数据中我没有。所以我想要的是在执行get_dummies 之后添加app_d,而我的数据中没有'd'值。

是否有任何代码可以一种热编码将我上面的简单数据转换为预定义的列?我想要的看起来像这样:

 app_a  app_b app_c  app_d
     0    1     0   0    0
     1    0     1   0    0
     2    0     0   1    0
     3    1     0   0    0

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    尝试将您的列转换为 pandas.Categorical dtype 并指定 categories 参数:

    df['app'] = pd.Categorical(df['app'], categories=['a', 'b', 'c', 'd'])
    
    pd.get_dummies(df['app'], prefix='app')
    

    [出]

       app_a  app_b  app_c  app_d
    0      1      0      0      0
    1      0      1      0      0
    2      0      0      1      0
    3      1      0      0      0
    

    或者,您可以转换为Categorical 类型并在事后使用cat.add_categories 访问器方法更新categories

    df['app'] = pd.Categorical(df['app'])
    
    df['app'].cat.add_categories(['d'], inplace=True)
    

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 1970-01-01
      • 2019-02-10
      • 2017-07-12
      • 2018-06-29
      • 2016-11-30
      • 1970-01-01
      • 2018-06-21
      相关资源
      最近更新 更多