除了列表理解之外,是否有更快的方法从集合中过滤项目,对于大型数据集,列表理解运行时间有点慢。
我已经转换了 list_stopwords
到一个集合,与列表相比花费的时间更少。
date description
0 2018-07-18 payment receipt
1 2018-07-18 ogsg s.u.b.e.b june 2018 salar
2 2018-07-18 sal admin charge
3 2018-07-19 sms alert charge outstanding
4 2018-07-19 vat onverve*issuance
list_stopwords = set(stop_words.get_stop_words('en'))
data['description'] = data['description'].apply(lambda x: " ".join([word for word in x.split() if word not in (list_stopwords)]))
最佳答案
也许使用正则表达式工作得更快:
拳头创建您的比赛案例正则表达式:
list_stopwords = set(stop_words.get_stop_words('en'))
re_stopwords= r"\b["
for word in list_stopwords:
re_stopwords+= "("+word+")"
re_stopwords+=r"]\b"
现在,申请列:data['description'] = data['description'].apply(lambda x: re.sub(re_stopwords,'',x))
这将用 ''
替换所有停用词(空字符串)。我相信它更快,因为正则表达式直接对字符串进行操作,而不是您的代码在拆分时得到一个循环。
\b
表达式:regular-expressions . 关于python - 如何提高对 Pandas 数据框的列表理解速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67164182/