首页 > 解决方案 > 如何提高熊猫数据框的列表理解速度

问题描述

除了列表理解之外,是否有更快的方法从集合中过滤项目,对于大型数据集,列表理解运行时间有点慢。

我已经将其转换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)]))

标签: pythonpandas

解决方案


也许使用正则表达式可以更快地工作:

拳头创建您的匹配案例正则表达式:


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))

''这将用(空字符串)替换所有停用词。

我相信它更快,因为正则表达式直接在字符串上操作,而不是你的代码在拆分时得到一个循环。


推荐阅读