2016-05-17 4 views

Antwort

11

Es kann ohne Verkettung erfolgen mit get_dummies() mit dem erforderlichen Parametern

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

Wählen Sie einfach die zwei Spalten, die Sie .get_dummies() wollen - column Namen angeben Quellspalte und Variablenlabel als binäre Variable dargestellt, und pd.concat() die ursprünglichen Spalten Sie wollen unverändert:

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

Können Sie bitte mehr Ihre Antwort erklären? – Zulu

+0

Hinzugefügt einige Details, hoffe das hilft. – Stefan

+0

aber ich möchte das Endergebnis alle Spalten enthalten, was bedeutet, Spalte C und Spalte B beenden. – Jack

1

zu den oben perfekten Antworten Hinzufügen, falls Sie haben einen großen Datensatz mit vielen Attributen, wenn Sie nicht wollen, zu s pecify von Hand alle Dummies, die Sie wollen, können Sie Unterschiede vornehmen:

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) 
Verwandte Themen