Имхо целесообразнее сделать атрибуты вроде "являяется ли комедией ? да/нет (1/0)", для этого ввести доп. столбцы. Если дублировать строки, то также сильно увеличится размер датафрейма.
import pandas
df1=pandas.DataFrame.from_records((
(1, 'xxx', 'Adv|Ani|Doc'),
(2, 'yyy', 'Adv|Doc'),
(3, 'zzz', 'Comedy|Doc')),
columns=['movieId','title','genres'])
genres_list=('Adv','Ani','Doc','Comedy')
for i in genres_list:
df1[i]=[0]*len(df1) #сначала прописать всем нули
print (df1)
for idx, row in df1.iterrows():
c=(row[2])
l=c.split('|')
for g in genres_list:
if g in l:
df1.loc[idx, g]=1
print (df1)
movieId title genres Adv Ani Doc Comedy
0 1 xxx Adv|Ani|Doc 0 0 0 0
1 2 yyy Adv|Doc 0 0 0 0
2 3 zzz Comedy|Doc 0 0 0 0
movieId title genres Adv Ani Doc Comedy
0 1 xxx Adv|Ani|Doc 1 1 1 0
1 2 yyy Adv|Doc 1 0 1 0
2 3 zzz Comedy|Doc 0 0 1 1