首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在大熊猫数据栏中应用Lemmatization

如何在大熊猫数据栏中应用Lemmatization
EN

Stack Overflow用户
提问于 2022-02-11 16:56:09
回答 2查看 480关注 0票数 2

如果我有以下数据:

代码语言:javascript
复制
import pandas as pd

d = {'col1': ['challenging', 'swimming'], 'col2': [3, 4]}
df = pd.DataFrame(data=d)

Output
          col1  col2
0  challenging     3
1     swimming     4

我使用的是WordNetLemmatizer:

代码语言:javascript
复制
print(wordnet_lemmatizer.lemmatize('challenging',pos='v'))
print(wordnet_lemmatizer.lemmatize('swimming',pos='v'))

Output
challenge
swim

如何将这个柠檬化函数应用于原始数据文件中的所有col1元素?

我尝试了以下方法,但没有取得任何进展,因为它需要输入pos,所以不需要更改dataframe。

代码语言:javascript
复制
df['col1'] =df['col1'].apply(wordnet_lemmatizer.lemmatize)

如果我试着:

代码语言:javascript
复制
df['col1'] =df['col1'].apply(wordnet_lemmatizer.lemmatize(pos='v'))

我得到了

TypeError:狐猴()缺少一个必需的位置参数:'word‘

期望的输出是:

代码语言:javascript
复制
        col1  col2
0       challenge     3
1       swim     4
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-12 12:12:17

使用lambda函数在apply中传递word参数。

代码语言:javascript
复制
df['col1'] = df['col1'].apply(lambda word: wordnet_lemmatizer.lemmatize(word, pos='v'))
print(df)
代码语言:javascript
复制
        col1  col2
0  challenge     3
1       swim     4
票数 0
EN

Stack Overflow用户

发布于 2022-02-11 17:11:35

要获得最好的输出,可以使用spacy。

代码语言:javascript
复制
import spacy
nlp = spacy.load("en_core_web_sm")  # load an existing English template
df['col1'] = [j.lemma_ for i in df['col1'] for j in nlp(i)]

您必须安装spacy,然后安装英语语言。

代码语言:javascript
复制
python -m spacy download en_core_web_sm
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71083770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档