2017-12-31 331 views
0
>>>table1 
     col1  col2 
row1  A   A 
row2  B   A 
row3  A   B 
row4  B   A 

を付加コラム私はワンホット表現または任意の他の方法スプリットパンダ実際の列名と

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

を使用して、次のデータフレームの中に上記のデータフレームにおける1つの列のみを変換するには、事前にありがとう

+0

Chekout pandas.get_dummies https://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html –

+0

うん、それは働いたが、私はしたいですそれはこの方法(編集)@ SahilDahiya –

答えて

1

の残りの部分を有するデータフレームとバックマージ列にget_dummiesを適用 -

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 
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 
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 + concatだろう列

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 
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 
関連する問題