Python 试图从带有列表的pandas系列中删除大量文本

Python 试图从带有列表的pandas系列中删除大量文本,python,performance,list,pandas,nlp,Python,Performance,List,Pandas,Nlp,我的问题基本上如下。我有一个pandas数据框架,其中有一列包含相当多的文本(通常为20到200个单词)。这个数据帧大约有60万行。除此之外,我还有一个单词列表,大约有150k个条目,需要从数据帧中的字符串中筛选出来。我目前正在使用此方法执行此操作: for word in uncommon_words: reports['Report_Clean_Filtered'] = reports['Report_Clean'].str.replace(word, '') 其中,单词是单词列表

我的问题基本上如下。我有一个pandas数据框架,其中有一列包含相当多的文本(通常为20到200个单词)。这个数据帧大约有60万行。除此之外,我还有一个单词列表,大约有150k个条目,需要从数据帧中的字符串中筛选出来。我目前正在使用此方法执行此操作:

for word in uncommon_words:
    reports['Report_Clean_Filtered'] = reports['Report_Clean'].str.replace(word, '')
其中,单词是单词列表,报告是数据框


我估计在我的机器上大概需要27个小时。有没有更好(或至少更快)的方法?我的思想非常开放!:)

不常见词的列表
与or运算符
|
连接起来,并立即将其全部替换

df = pd.DataFrame(dict(a=['hello bye one two', "hello", "bye 1"]))
                   a
0  hello bye one two
1              hello
2              bye 1

uncommon_words = ['hello', 'bye']

df.a.str.replace('|'.join(uncommon_words), '')

0      one two
1             
2            1

用or运算符
|
加入
不常见词的列表,并立即将其全部替换

df = pd.DataFrame(dict(a=['hello bye one two', "hello", "bye 1"]))
                   a
0  hello bye one two
1              hello
2              bye 1

uncommon_words = ['hello', 'bye']

df.a.str.replace('|'.join(uncommon_words), '')

0      one two
1             
2            1

这似乎是可行的,但仍然是难以置信的缓慢,你认为它可能只是不可能做到快?实际上,我开始认为这可能是一个大数据问题。@Daannnn预计需要多长时间?您是要经常执行此任务,还是仅此一次?在你认为这是一个大数据问题之前,这些是你想问的问题。如果是这样,请在堆栈溢出问题上提出另一个问题,说明您已经尝试了我的答案,现在有人可能会更快地(可能是numpy/cython)解决此问题。希望这些帮助看起来有效,但仍然非常缓慢,你认为它不可能做到快吗?实际上,我开始认为这可能是一个大数据问题。@Daannnn预计需要多长时间?您是要经常执行此任务,还是仅此一次?在你认为这是一个大数据问题之前,这些是你想问的问题。如果是这样,请在堆栈溢出问题上提出另一个问题,说明您已经尝试了我的答案,现在有人可能会更快地(可能是numpy/cython)解决此问题。希望有帮助