2016-05-17 46 views
1
df = pd.DataFrame({'A': ['x', 'y', 'x'], 'B': ['z', 'u', 'z'], 
        'C': ['1', '2', '3'], 
        'D':['j', 'l', 'j']}) 

私はちょうど列AとDが列Bのためのダミーを取得しないようにします。pd.get_dummies(df)を使用した場合、すべての列はダミーになります。pandas get_dummies()メソッドで特定の列のダミーを作成する方法は?

すべての列(つまり、列Cと列Bの出口)を含む最終結果が'A_x','A_y','B','C','D_j','D_l'のようにしたい。

答えて

11

それは連結せずに行うことができますあなたは秒にしたくない場合は、必要なパラメータ上記完璧な答えに追加

In [294]: pd.get_dummies(df, prefix=['A', 'D'], columns=['A', 'D']) 
Out[294]: 
    B C A_x A_y D_j D_l 
0 z 1 1.0 0.0 1.0 0.0 
1 u 2 0.0 1.0 0.0 1.0 
2 z 3 1.0 0.0 1.0 0.0 
1

だけのために.get_dummies()にしたい2つの列を選択する - ソース列とバイナリ変数として表され、変数のラベルを示し、pd.concat()あなたが変わらたい元の列column名:

pd.concat([pd.get_dummies(df[['A', 'D']]), df[['B', 'C']]], axis=1) 

    A_x A_y D_j D_l B C 
0 1.0 0.0 1.0 0.0 z 1 
1 0.0 1.0 0.0 1.0 u 2 
2 1.0 0.0 1.0 0.0 z 3 
+0

もっと答えを教えてください。 – Zulu

+0

いくつかの詳細が追加され、これが役立つことを願っています。 – Stefan

+0

しかし、すべての列を含む最終的な結果が必要です。つまり、列Cと列Bの終了を意味します。 – Jack

1

とget_dummies()を使用して、ケースであなたは、属性のたくさんの大きなデータセットを持っていますあなたが望むダミーのすべてを手で特定し、あなたは設定の違いを行うことができます:

len(df.columns) = 50 
non_dummy_cols = ['A','B','C'] 
# Takes all 47 other columns 
dummy_cols = list(set(df.columns) - set(non_dummy_cols)) 
df = pd.get_dummies(df, columns=dummy_cols) 
関連する問題