从字符串列中高效地删除多个短语

6

我想要在一列中删除几个单词,我已经编写了下面的代码,它可以正常工作。

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个回答

4
您可以在这里使用正则表达式,并将其减少为单个 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,您可以使用 loc 重新分配:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接