Python-从熊猫系列中删除停用词的功能

时间:2019-03-05 14:23:51

标签: python pandas nlp nltk series

我有以下数据,这些数据以系列存储(称为 data_counts ),在“索引”中显示单词,在“ 0”列中显示计数值。系列包含3万个单词,但是我以以下示例为例:

Index      |    0

the        |    3425
American   |    431 
a          |    213 
I          |    124
hilarious  |    53
Mexican    |    23
is         |    2 

我想将Index中的单词转换为小写并使用NLTK删除停用词。我已经看到了一些使用“ lambdas”实现此目标的示例(有关数据帧,请参见下面的示例),但是我想通过运行DEF函数来做到这一点(我是Python新手,在我看来,这是最简单的了解)。

df['Index'] = df['Index'].apply(lambda stop_remove: [word.lower() for word in stop_remove.split() if word not in stopwords])

非常感谢

1 个答案:

答案 0 :(得分:0)

如果您确实想define使用自己的函数,则可以在该行之后使用.apply

from nltk.corpus import stopwords

df = pd.DataFrame(index=['the', 'American', 'a', 'I', 'hilarious', 'Mexican', 'is'],
                  data={ 0:[3425, 431, 213, 124, 53, 23, 2]})

# Clean up dataframe and convert words to lowercase
df['words'] = df.index.str.lower()
df.reset_index(drop=True, inplace=True)

# Define our function to remove stopwords
def remove_stopwords(word):
    if word not in stopwords.words('english'):
        return word
    else:
        return ''

# Apply the function to our words column to clean up.
df['words_clean'] = df.words.apply(remove_stopwords)
print(df)
      0      words words_clean
0  3425        the            
1   431   american    american
2   213          a            
3   124          i            
4    53  hilarious   hilarious
5    23    mexican     mexican
6     2         is