### Import libraries and load sample data
import numpy as np
import pandas as pd
data = {
'Movie 1': ['Action, Fantasy'],
'Movie 2': ['Fantasy, Drama'],
'Movie 3': ['Action'],
'Movie 4': ['Sci-Fi, Romance, Comedy'],
'Movie 5': ['NA'],
}
df = pd.DataFrame.from_dict(data, orient='index')
df.rename(columns={0:'column'}, inplace=True)
На этом этапе наш DataFrame выглядит так:
column
Movie 1 Action, Fantasy
Movie 2 Fantasy, Drama
Movie 3 Action
Movie 4 Sci-Fi, Romance, Comedy
Movie 5 NA
Теперь вопрос, который мы задаем, - встречается ли данное жанровое слово («подстрока») в столбце ' 'для заданного mov ie?
Для этого нам сначала понадобится список слов жанров:
### Join every string in every row, split the result, pull out the unique values.
genres = np.unique(', '.join(df['column']).split(', '))
### Drop 'NA'
genres = np.delete(genres, np.where(genres == 'NA'))
В зависимости от размера вашего набора данных это может быть вычислительно дорого. Вы упомянули, что вам уже известны уникальные ценности. Таким образом, вы можете просто вручную определить повторяемые «жанры». , это возвращает True или False, которые преобразуются в 1 или 0 соответственно - когда мы приводим к типу ('int').
В итоге получаем:
Action Comedy Drama Fantasy Romance Sci-Fi
Movie 1 1 0 0 1 0 0
Movie 2 0 0 1 1 0 0
Movie 3 1 0 0 0 0 0
Movie 4 0 1 0 0 1 1
Movie 5 0 0 0 0 0 0