Эффективное удаление нескольких фраз из строкового столбца - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу удалить несколько слов в столбце, и я написал ниже код, который работает нормально

finaldata['keyword'] = finaldata['keyword'].str.replace("Washington Times", "")
finaldata['keyword'] = finaldata['keyword'].str.replace("Washington Post", "")
finaldata['keyword'] = finaldata['keyword'].str.replace("Mail The Globe", "")

Теперь у меня есть около 30 слов для удаления, но я не могу повторить эту строку кода30 раз Есть ли способ решить мою проблему, если да, пожалуйста, направьте меня

1 Ответ

0 голосов
/ 19 декабря 2018

Здесь вы можете использовать регулярное выражение и уменьшить его до одного replace вызова.

words = ["Washington Times", "Washington Post", "Mail The Globe"]
p = '|'.join(words)

finaldata['keyword'] = finaldata['keyword'].str.replace(p, '')

Для производительности, если у данных нет NaN, вам следует рассмотреть возможность использования списка.

import re

p2 = re.compile(p)
finaldata['keyword'] = [p2.replace('', text) for text in finaldata['keyword']]

Если есть NaN, вы можете использовать select и использовать loc для переназначения:

m = finaldata['keyword'].notna()
finaldata.loc[m, 'keyword'] = [
    p2.replace('', text) for text in finaldata.loc[m, 'keyword'].tolist()]
...