Проблема в том, что если вы используете .split()
без чего-либо еще, каждая подстрока также будет разделена.
Так что ... ,HOH A 604 ...
будет разбит на ['...', ',' ,'HOH', 'A', '604', '...']
.
. Я понял, что вы хотите удалить каждый HOH
со следующими номерами, верно?
Выполнение этого способа .split()
приведет к удалению только HOH
и сохранению A
& 604
.
Если вы используете .split(',')
с запятой в качестве параметра, тогда мыполучит все между запятыми.
Проблема, которую я вижу с startswith
, заключается в том, что иногда у ваших строк есть дополнительный пробел после запятой, а иногда нет (например, HOH A 604 & , HOH A 605
)
Поэтому я бы предложил использовать not in
вместо этого. НО: знайте, что это удаляет все подстроки, которые содержат HOH
, даже если они находятся в конце.
попробуйте это:
df['res'].str.split(',').apply(lambda x: [k for k in x if 'HOH' not in k])
Значение ячейки теперь является списком строк, есливам нужно снова ввести строку, попробуйте это:
df['res'].str.split(',').apply(lambda x: ','.join([k for k in x if 'HOH' not in k]))