У меня есть список, который выглядит следующим образом: li = ['ShortHair','LongHair','Medium Hair']
Python. Как обновить столбец, взяв подстроку из другого столбца?
Я хочу, чтобы проверить, если 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
Ошибка.
Как я могу это сделать?
Что делать, если у вас есть длинный или короткошерстный? Что должно содержать col3 и почему? – Alexander
Удалите оба, держите первым. Я обновлю вопрос – harshit
@Alexander. Я уверен, что этого не произойдет в наборе данных, который я использую. Тем не менее, для моих целей, чтобы получить первое значение, – harshit