Как удалить определенные слова, только если это дополнительное ключевое слово - PullRequest
0 голосов
/ 22 февраля 2019

Вот мои данные

id  keyword
1   transfer
2   atm transfer
3   atm
4   ulta transfer

Я хочу удалить transfer слово, если не осталось ни одного слова, но если осталось только transfer слово, слово все еще осталось, другое слово - atm, но если осталось только atm и transfer, мы выбираем atm

Мой ожидаемый результат

id  keyword       keyword_2
1   transfer      transfer
2   atm transfer  atm
3   atm           atm
4   ulta transfer ulta

Надеюсь, этот вопрос достаточно ясен

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019
d['keyword'].apply(lambda x: x.replace('transfer','') if len(x.split(' ')) > 1 else x )

выход

0    transfer
1        atm 
2         atm
3       ulta 
Name: keyword, dtype: object
0 голосов
/ 22 февраля 2019

Использование replace применяется только для отфильтрованных значений по mask:

df['keyword_2'] = df['keyword'].mask(df['keyword'] != 'transfer', 
                                     df['keyword'].str.replace('transfer', '').str.strip())
print (df)
   id        keyword keyword_2
0   1       transfer  transfer
1   2   atm transfer       atm
2   3            atm       atm
3   4  ulta transfer      ulta

Другое решение без полоски, но с join иsplit:

print (df)
   id          keyword
0   1         transfer
1   2     atm transfer
2   3              atm
3   4  ulta transfer v

df['keyword_2'] = [' '.join(y for y in x.split() if y != 'transfer') 
                         if x != 'transfer' else x for x in df['keyword']]

print (df)
   id          keyword keyword_2
0   1         transfer  transfer
1   2     atm transfer       atm
2   3              atm       atm
3   4  ulta transfer v    ulta v
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...