2015-12-03 1 views
0

J'ai une trame de données comme:Créer des colonnes sur dataframe avec la liste des valeurs analysable

OMDB_AWARDS OMDB_GENRE 
1 Oscar  |Drama| 
2 Emmy  |Sci-Fi|Comedy| 
1 Emmy  |Comedy| 

Comment puis-je créer dynamiquement les nouvelles colonnes comme indiqué ci-dessous?

OMDB_AWARDS OMDB_GENRE OMDB_GENRE_DRAMA OMDB_GENRE_Comedy OMDB_GENRE_Sci-Fi  
1 Oscar  |Drama|     1     0   0 
2 Emmy  |Sci-Fi|Comedy|   0     1   1 
1 Emmy  |Comedy|     0     1   0 

Je peux analyser des valeurs uniques de telle manière

genre = pd.Series (df.OMDB_GENRE.ravel()). Unique()

Cependant ont encore des problèmes avec colonnes dynamiques et valeurs appropriées

+0

S'il vous plaît envoyer des données d'entrée brutes et le code pour reproduire votre df exactement – EdChum

Répondre

1

Un moyen très simple serait:

df['OMDB_GENRE_DRAMA'] = df.OMDB_GENRE.apply(lambda x: 1 if 'Drama' in x else 0) 

et de répéter pour tous les genres. Si vous avez beaucoup de genres, vous pouvez prendre la liste des noms de genre et faire quelque chose comme:

genres = ['Drama', 'Comedy', ..] 
for genre in genres: 
    df['OMDB_GENRE_{}'.format(genre)] = df.OMDB_GENRE.apply(lambda x: 1 if genre in x else 0)