我有以下数据,这些数据以系列存储(称为 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])
非常感谢
答案 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