【问题标题】:How to turn a DataFrame column of binary variables into multiple columns of dummy variables如何将二进制变量的DataFrame列转换为虚拟变量的多列
【发布时间】:2017-09-18 17:16:45
【问题描述】:

这应该是一个简单的问题,但由于某种原因我无法在网上找到答案。我有一个由虚拟变量组成的 DataFrame 列:

import pandas as pd

foo = pd.Series([6,7,8,3])
foo1 = bob.apply(lambda x: bin(x)[2:].zfill(4))
foo1

0    0110
1    0111
2    1000
3    0011

我想要的是一个 4x4 的数据框,看起来像

A B C D
0 1 1 0
0 1 1 1
1 0 0 0
0 0 1 1

我尝试使用 get_dummies 没有结果:

foo1.str.get_dummies()

0110 0111 1000 0011
1    0    0    0
0    1    0    0
0    0    1    0
0    0    0    1

str.split 并将列制作成一系列列表也不起作用。我该怎么办?

【问题讨论】:

    标签: python pandas binary dummy-variable


    【解决方案1】:

    你可以试试这个:

    # convert the series to str type; 
    # extract all characters with regex .; 
    # unstack to wide format
    foo1.astype(str).str.extractall('(.)')[0].unstack()
    

    【讨论】:

      【解决方案2】:

      这将跳过您的初始步骤 foofoo1 并直接从 foo 到达那里

      foo.apply(lambda x: pd.Series(list('{:04b}'.format(x))))
      
         0  1  2  3
      0  0  1  1  0
      1  0  1  1  1
      2  1  0  0  0
      3  0  0  1  1
      

      【讨论】:

        【解决方案3】:
        In [49]: pd.DataFrame(foo1.apply(list).values.tolist())
        Out[49]:
           0  1  2  3
        0  0  1  1  0
        1  0  1  1  1
        2  1  0  0  0
        3  0  0  1  1
        

        【讨论】:

          猜你喜欢
          • 2015-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-28
          • 2018-03-17
          • 2020-08-02
          • 2021-01-01
          相关资源
          最近更新 更多