Python 试图从带有列表的pandas系列中删除大量文本
我的问题基本上如下。我有一个pandas数据框架,其中有一列包含相当多的文本(通常为20到200个单词)。这个数据帧大约有60万行。除此之外,我还有一个单词列表,大约有150k个条目,需要从数据帧中的字符串中筛选出来。我目前正在使用此方法执行此操作: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, '') 其中,单词是单词列表
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)解决此问题。希望有帮助