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

时间:2018-12-19 04:12:27

标签: python python-3.x string pandas

我想删除一列中的几个词,并且在下面的代码中写得很好

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 :(得分:3)

您可以在此处使用正则表达式并将其减少为单个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()]