使用已分析的列表值在DataFrame上创建列

时间:2015-12-03 16:03:00

标签: python python-2.7 pandas dataframe

我有一个类似的数据框:

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()

但是动态列和适当的值仍存在问题

1 个答案:

答案 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)