Nih*_*hal 3 python dataframe python-3.x pandas
我有流派的数据框
df = pd.DataFrame({'genres': [['Drama'], ['Music', 'Drama', 'Romance'],
['Action', 'Adventure', 'Comedy'],
['Thriller', 'Romance', 'Drama'],
['Adventure', 'Family']]
})
print(df)
genres = ['Action', 'Adventure', 'Comedy', 'Drama', 'Family', 'Music', 'Romance', 'Thriller'] # list of all genres
Run Code Online (Sandbox Code Playgroud)
数据:
genres
0 [Drama]
1 [Music, Drama, Romance]
2 [Action, Adventure, Comedy]
3 [Thriller, Romance, Drama]
4 [Adventure, Family]
Run Code Online (Sandbox Code Playgroud)
我希望输出像:
genres Action Adventure Comedy Drama Family \
0 [Drama] 0 0 0 1 0
1 [Music, Drama, Romance] 0 0 0 1 0
2 [Action, Adventure, Comedy] 1 1 1 0 0
3 [Thriller, Romance, Drama] 0 0 0 1 0
4 [Adventure, Family] 0 1 0 0 1
Music Romance Thriller
0 0 0 0
1 1 1 0
2 0 0 0
3 0 1 1
4 0 0 0
Run Code Online (Sandbox Code Playgroud)
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
df1 = pd.DataFrame(mlb.fit_transform(df['genres']),columns=mlb.classes_, index=df.index)
df = df.join(df1)
print (df)
genres Action Adventure Comedy Drama Family \
0 [Drama] 0 0 0 1 0
1 [Music, Drama, Romance] 0 0 0 1 0
2 [Action, Adventure, Comedy] 1 1 1 0 0
3 [Thriller, Romance, Drama] 0 0 0 1 0
4 [Adventure, Family] 0 1 0 0 1
Music Romance Thriller
0 0 0 0
1 1 1 0
2 0 0 0
3 0 1 1
4 0 0 0
Run Code Online (Sandbox Code Playgroud)
如果想通过列表过滤类型添加reindex:
genres = ['Action', 'Adventure', 'Comedy', 'Drama']
df1 = pd.DataFrame(mlb.fit_transform(df['genres']),columns=mlb.classes_, index=df.index)
df = df.join(df1.reindex(columns=genres, fill_value=0))
print (df)
genres Action Adventure Comedy Drama
0 [Drama] 0 0 0 1
1 [Music, Drama, Romance] 0 0 0 1
2 [Action, Adventure, Comedy] 1 1 1 0
3 [Thriller, Romance, Drama] 0 0 0 1
4 [Adventure, Family] 0 1 0 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |