拆分pandas列前置实际列名称

时间:2017-12-31 17:10:54

标签: python python-3.x pandas dataframe

>>>table1
         col1      col2
row1      A         A
row2      B         A
row3      A         B
row4      B         A
     

我想使用one-hot表达式或任何其他方法将上述数据框中的一列仅转换为以下DataFrame

>>>table1
         col1_A    col1_B    col2
row1      1         0         A
row2      0         1         A
row3      1         0         B
row4      0         1         A
     

提前谢谢

4 个答案:

答案 0 :(得分:1)

使用pd.get_dummies

In [211]: pd.get_dummies(table1)
Out[211]:
      col1_A  col1_B  col2_A  col2_B
row1       1       0       1       0
row2       0       1       1       0
row3       1       0       0       1
row4       0       1       1       0

答案 1 :(得分:1)

最简单的方法是get_dummies + concat -

df
     col1 col2
row1    A    A
row2    B    A
row3    A    B
row4    B    A

i = pd.get_dummies(df.col1, prefix='col1')
j = df.drop('col1', axis=1)  # remove the column being OHE'd, thanks to the English puppy.

pd.concat([i, j], 1)

      col1_A  col1_B col2
row1       1       0    A
row2       0       1    A
row3       1       0    B
row4       0       1    A

答案 2 :(得分:0)

试试这个:

df = pd.DataFrame({"col1":['A','B']*2,'col2':['A','A','B','A']},index=['row1','row2','row3','row4'])
df

      col1  col2
row1    A   A
row2    B   A
row3    A   B
row4    B   A

仅在您想要的列上应用get_dummies,然后将其与包含其余列的数据框合并回来

df1 = pd.get_dummies(df.loc[:,"col1"]).join(df.loc[:,"col2"])
df1

        A   B   col2
row1    1   0   A
row2    0   1   A
row3    1   0   B
row4    0   1   A

答案 3 :(得分:0)

让我们使用一些列选择,pd.get_dummiesassign加入数据框。

df[['col2']].assign(**pd.get_dummies(df[['col1']]))

输出:

     col2  col1_A  col1_B
row1    A       1       0
row2    A       0       1
row3    B       1       0
row4    A       0       1