0

我有电影类型的数据。流派用“”分隔

id   genres
0   drama romance
1   drama
2   comedy
3   mystery thriller
4   crime thriller
...

我想按类型划分它们(大约 20 个)

id   drama romance comedy...
0     1      1      0
1     1      0      0
2     0      0      1
3     0      0      0
4     0      0      0
...

我正在考虑获得假人,但我认为这无济于事。

4

1 回答 1

1

这是一个可能的解决方案(df是您的数据框):

pd.merge(df[['id']], pd.get_dummies(df.genres.str.split().explode()),
         left_on='id', right_index=True).groupby('id').sum()

这是一个例子:

>>> df = pd.DataFrame({'id': [0,1,2,3,4], 'genres': ['drama romance', 'drama', 'comedy', 'mystery thriller', 'crime thriller']})
>>> pd.merge(df[['id']], pd.get_dummies(df.genres.str.split().explode()), left_on='id', right_index=True).groupby('id').sum()
    comedy  crime  drama  mystery  romance  thriller
id                                                  
0        0      0      1        0        1         0
1        0      0      1        0        0         0
2        1      0      0        0        0         0
3        0      0      0        1        0         1
4        0      1      0        0        0         1
于 2020-10-27T13:21:56.667 回答