У меня есть список, который выглядит так: li = ['ShortHair','LongHair','Medium Hair']
Я хочу проверить, содержит ли col2 какую-либо из приведенных выше подстрок, если он берет ее из col2 и обновляет col3. Если это не так, то оставьте col3 как есть.
col1 col2 col3
0 w I have ShortHair U
1 x LongHair You Have V
2 y I have no hair W
3 z Look Medium Hair! L
получить:
col1 col2 col3
0 w I have ShortHair
1 x You Have LongHair
2 y I have no hair W
3 z Look ! Medium Hair
EDIT: Если в массиве есть несколько вхождений подстроки, удалите как форму col2, так и обновите col3 первым значением.
Я могу удалить подстроку из col2, но не могу обновить col3. Я старался:
data[data.col2.str.contains('|'.join(li)),"col3"] = data["col2"].map(lambda x: re.findall('|'.join(li),x)[0])
Выдает ошибку IndexError: list index out of range
.
Как мне лучше всего это сделать?