2017-08-03 20 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

まず1つの列は、この列に.values[0]を行うことを取得します。
2番目に生成された文字列を使用し、|リストに入れる
df[df[list]]を使用すると、必要な応答が得られます。 (単一のエントリのために)締結に

genres = list(df['Genre'].values[0].split('|')) 
df[genres] 
関連する問題