2016-02-04 30 views
1

我有一列看起來像一個數據框的列表:產生大熊貓許多假人當每個觀察包含可能的值

col 
A B C 
B C X 
U 

我想產生一些虛擬變量,告訴我,如果一個行包含一個具體的價值。也就是說,在這個例子中,我想生成5個虛擬變量(D_A,D_B,d_C,D_X,d_U),這樣的數據看起來就像是

col  d_A  d_B  d_C  d_X  d_U 
A B C 1  1  1  0  0 
B C X 0  1  1  1  0 
... 

我有很多很多的可能值,所以我不能用手輕鬆做到這一點。任何想法如何做到熊貓(在矢量化模式)?

謝謝!

回答

1

使用str.get_dummiesjoinconcat

print df.col.str.get_dummies(sep=' ') 
    A B C U X 
0 1 1 1 0 0 
1 0 1 1 0 1 
2 0 0 0 1 0 

print df.join(df.col.str.get_dummies(sep=' ')) 
    col A B C U X 
0 A B C 1 1 1 0 0 
1 B C X 0 1 1 0 1 
2  U 0 0 0 1 0 

如果需要更改列名稱使用列表理解:

df1 = df.col.str.get_dummies(sep=' ') 
df1.columns = ['d_' + x for x in df1.columns] 
print df1 
    d_A d_B d_C d_U d_X 
0 1 1 1 0 0 
1 0 1 1 0 1 
2 0 0 0 1 0 

print df.join(df1) 
    col d_A d_B d_C d_U d_X 
0 A B C 1 1 1 0 0 
1 B C X 0 1 1 0 1 
2  U 0 0 0 1 0 

print pd.concat([df, df1], axis=1) 
    col d_A d_B d_C d_U d_X 
0 A B C 1 1 1 0 0 
1 B C X 0 1 1 0 1 
2  U 0 0 0 1 0 
+0

感謝偉大的!謝謝!我想'concat'和'str.get_dummies'也會起作用 –

+1

是的,我也將它添加到答案中。 – jezrael

+0

非常有幫助,很多感謝大師@jezrael –

相關問題