【问题标题】:Label Binarizer: Multiple Columns标签二值化器:多列
【发布时间】:2018-06-11 13:41:38
【问题描述】:

我目前正在尝试转换下面的数据框:

0                Cat             Chicken
1                Fish            Chicken
2                Fish            Cat
3                Cat             Chicken
4                Dog             Cat

                Cat    Fish   Dog    Chicken
0                1      0      0      1     
1                0      1      0      1
2                1      1      0      0
3                1      0      0      1
4                1      0      1      0

到目前为止,我只成功地完成了单列的标签二值化器。我可以想象以蛮力的方式执行此操作,循环遍历所有内容并有条件地检查。但是,这会导致运行时间很长。因此,有没有更聪明的方法来做到这一点?

【问题讨论】:

    标签: python python-3.x pandas scikit-learn


    【解决方案1】:

    使用带有前缀和前缀分隔符的get_dummies作为空字符串,即

    pd.get_dummies(df,prefix='',prefix_sep='').groupby(level=0, axis=1).max() # Thanks @ coldspeed
    
         Cat  Chicken  Dog  Fish
    0    1        1    0     0
    1    0        1    0     1
    2    1        0    0     1
    3    1        1    0     0
    4    1        0    1     0
    

    【讨论】:

    • pd.get_dummies(df,prefix='',prefix_sep='').groupby(level=0, axis=1).max()
    【解决方案2】:
    df.apply(','.join,1).str.get_dummies(sep=',')
    Out[51]: 
       Cat  Chicken  Dog  Fish
    0    1        1    0     0
    1    0        1    0     1
    2    1        0    0     1
    3    1        1    0     0
    4    1        0    1     0
    

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 2019-09-09
      • 2019-03-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多