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
添加回答
舉報