首页 > 解决方案 > 在数据框中使用 str.contains 和正则表达式搜索单词很慢,有没有更好的方法?

问题描述

我有一个超过 200 万行的数据库。我正在尝试使用正则表达式查找包含两个单词的行,例如:

df1 = df[df['my_column'].str.contains(r'(?=.*first_word)(?=.*second_word)')]

但是,当尝试在 jupyter notebook 中处理这个问题时,返回这些行需要一分钟多的时间,或者它会使内核崩溃,我必须再试一次。

有没有更有效的方法来返回包含两个单词的数据框中的行?

标签: pythonregexpandasdataframejupyter-notebook

解决方案


利用

df['my_column'].apply(lambda x: all(l in x for l in ['first_word', 'second_word']) )

它将确保列表中的单词都出现在my_column列中,而没有尴尬的正则表达式。


推荐阅读