Пожалуйста, помогите, мне нужно создать новый столбец. Если мой столбец Жанры, который является списком, содержит значение.
если Genres содержит: lookuptable ['first'] и lookuptable ['second']
Из таблицы поиска возвращает соответствующее значение.
Я перепробовал много методов, еще не знакомых с Python, надеясь, что я был близок
Возврат: lookuptable ['mid-genre']
Таблица поиска
dh - кадр данных ниже
sub-genre first second mid-genre genre
indie indie Alternative rock
dream pop dream pop Alternative rock
shoegaze shoegaze Alternative rock
post-hardcore post hardcore HardcorePunk rock
emo emo HardcorePunk rock
screamo screamo HardcorePunk rock
synthcore synthcore Harcore Punk rock
rock rock Contemporary rock
diy = кадр данных ниже
artist genres New Column
2:54 ['metropopolis'] No Genre (blank)
22 ['norwegian rock'] Contemporary
27 ['boston rock'] Contemporary
33 [] No Genre (blank)
36 ['ambient', 'compositional ambient', 'drift', ...
44 ['emo', 'pop punk', 'skate punk'] Hardcore Punk
52 []
68 []
83 ['hip hop quebecois'] Hip hop
Попытки кода ниже
diy = pd.DataFrame(data[['artist','genres']])
for i in diy['genres'].iteritems():
for x, y, z, t in zip(dh['first'], dh['second'],dh['mid-genre'],dh['genre']):
if h.str.contains(x) and h.str.contains(z):
diy['mid-genre'] = z
diy['Main-genre'] = t
Сообщение об ошибке
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
2-я попытка, я добавил .any () в оператор IF, чтобы попытаться обработать исключение:
if h.str.contains(x).any() and h.str.contains(z).any():
UserWarning: This pattern has match groups. To actually get the groups, use str.extract.