我有一个类似的数据框:
OMDB_AWARDS OMDB_GENRE
1 Oscar |Drama|
2 Emmy |Sci-Fi|Comedy|
1 Emmy |Comedy|
如何动态创建新列?如下所示?
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
我可以用这种方式解析唯一值
genre = pd.Series(df.OMDB_GENRE.ravel())。unique()
但是动态列和适当的值仍存在问题
答案 0 :(得分:1)
一种非常简单的方法是:
df['OMDB_GENRE_DRAMA'] = df.OMDB_GENRE.apply(lambda x: 1 if 'Drama' in x else 0)
并重复所有类型。如果您有多种类型,可以列出类型名称并执行以下操作:
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)