首页 > 解决方案 > 将自定义停用词附加到 nltk.corpus 中的默认停用词列表,并使用 lambda 从数据帧中的系列中删除停用词

问题描述

我有 41,000 行 Flickr 标签的多列数据框。我只想从一列中删除所有英语停用词,而其他列保持不变。

这是我从 nltk.corpus 中提取停用词列表的代码:

from nltk.corpus import stopwords
stopWordsListEng = stopwords.words("english")

但我想添加我能想到的其他停用词:

according accordingly across act actually

我还没有弄清楚如何将其添加到现有的停用词列表中。

以及如何应用 lambda 仅删除一列中的停用词。因为我希望我的代码尽可能简单。

这是我的专栏的样子:

column1                        column2                                                 column3
some words from this column    i don't know actually what across to me accordingly     25,000

在删除所有停用词后,我希望我的专栏看起来像这样(或多或少):

column1                        column2                column3
some words from this column    don't know what to me  25,000

标签: pythonlambdatagsflickrstop-words

解决方案


您可以使用列表向现有停用词添加其他停用词extend

_new_stopwords_to_add = ['according', 'accordingly', 'across', 'act', 'actually']
stopWordsListEng.extend(_new_stopwords_to_add)

仅使用pandas.DataFrame.apply从一个 pandas 列中删除停用词

df['column2'] = df['column2'].apply(lambda x: ' '.join([item for item in x.split() if item not in stopWordsListEng]))

推荐阅读