如果我有以下数据:
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:
print(wordnet_lemmatizer.lemmatize('challenging',pos='v'))
print(wordnet_lemmatizer.lemmatize('swimming',pos='v'))
Output
challenge
swim如何将这个柠檬化函数应用于原始数据文件中的所有col1元素?
我尝试了以下方法,但没有取得任何进展,因为它需要输入pos,所以不需要更改dataframe。
df['col1'] =df['col1'].apply(wordnet_lemmatizer.lemmatize)如果我试着:
df['col1'] =df['col1'].apply(wordnet_lemmatizer.lemmatize(pos='v'))我得到了
TypeError:狐猴()缺少一个必需的位置参数:'word‘
期望的输出是:
col1 col2
0 challenge 3
1 swim 4发布于 2022-02-12 12:12:17
使用lambda函数在apply中传递word参数。
df['col1'] = df['col1'].apply(lambda word: wordnet_lemmatizer.lemmatize(word, pos='v'))
print(df) col1 col2
0 challenge 3
1 swim 4发布于 2022-02-11 17:11:35
要获得最好的输出,可以使用spacy。
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,然后安装英语语言。
python -m spacy download en_core_web_smhttps://stackoverflow.com/questions/71083770
复制相似问题