2 回答
TA贡献1775条经验 获得超8个赞
你可以用 pandas DataFrame.replace() 来做
In [1]: import pandas as pd
...: df = pd.DataFrame({'game': ['juegos blue', 'juego red', 'juegos yellow']})
...: stop_words = [r'juego\b', r'juegos\b']
...: df.replace(to_replace={'game': '|'.join(stop_words)}, value='', regex=True, inplace=True)
...: df
Out[1]:
game
0 blue
1 red
2 yellow
In [2]: df = pd.DataFrame({'game': ['juegos blue', 'juego red', 'juegos yellow']})
...: stop_words = [r'juego\b']
...: df.replace(to_replace={'game': '|'.join(stop_words)}, value='', regex=True, inplace=True)
...: df
Out[2]:
game
0 juegos blue
1 red
2 juegos yellow
假设 stop 'words' 以单词 boundary 结尾\b。
TA贡献1828条经验 获得超4个赞
Python 字符串替换不起作用,但正则表达式模块可以。您将需要向字符串添加一些标记以使正则表达式查找完整的单词。例如,您可能知道它是一个完整的单词,因为它后面跟有句号.、逗号,或任何类型的空格\s,或结尾行$。\b是单词边界的正则表达式模式。
import re
s1 = df['game'].str
for sw in stopWords:
s1 = re.sub(r'{0}\b'.format(sw), '', s1)
df['game'].str = s1
保留旧代码以备不时之需。此方法还会直接删除匹配词后的空格、逗号或句点,这不是您要求的,但可能会有用。
import re
s1 = df['game'].str
for sw in stopWords:
s1 = re.sub(r'{0}([.,\s]|$)'.format(sw), '', s1)
df['game'].str = s1
添加回答
举报