2017-08-03 41 views
1

我有這樣一欄:如何從單個列中獲取多個列?

  Genre 
Action|Crime|Drama|Thriller     
Action|Crime|Thriller       
Drama|Thriller         
Crime|Drama          
Horror|Thriller         
Crime|Drama|Mystery|Thriller     
Documentary          
Comedy|Crime         
Action|Adventure|Sci-Fi 
..... 
so on. 

我想是什麼樣的多列輸出:

it generate various column of genre eg: 
action scifi crime adventure . . . . . 
0  1  0  1  0 
1  0  0  0  0 

回答

3

使用.str.splitstack,並get_dummies

df['Genre'].str.split('|',expand=True).stack().str.get_dummies().sum(level=0) 

輸出:

Action Adventure Comedy Crime Documentary Drama Horror Mystery \ 
0  1   0  0  1   0  1  0  0 
1  1   0  0  1   0  0  0  0 
2  0   0  0  0   0  1  0  0 
3  0   0  0  1   0  1  0  0 
4  0   0  0  0   0  0  1  0 
5  0   0  0  1   0  1  0  1 
6  0   0  0  0   1  0  0  0 
7  0   0  1  1   0  0  0  0 
8  1   1  0  0   0  0  0  0 

    Sci-Fi Thriller 
0  0   1 
1  0   1 
2  0   1 
3  0   0 
4  0   1 
5  0   1 
6  0   0 
7  0   0 
8  1   0 
1

首先要獲取一列,然後在此列做.values[0]
其次使用先前生成的字符串,通過|列入清單。
使用df[df[list]]應該給你你想要的迴應。

總括(用於單個條目):

genres = list(df['Genre'].values[0].split('|')) 
df[genres] 
相關問題