如何将列从数据帧传递到wordnet.synsets()在NLTK python中

2024-04-28 20:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,其中一列包含英语单词。我想通过NLTKs synsets()函数传递该列中的每个元素。我的问题是synsets()一次只接受一个单词。在

例如wordnet.synsets(“父亲”)

如果我有这样的数据帧:

dc = {'A':[0,9,4,5],'B':['father','mother','kid','sister']}
df = pd.DataFrame(dc)
df
   A       B
0  0  father
1  9  mother
2  4     kid
3  5  sister

我想通过synsets()函数传递B列,并有另一列包含它的输出。我希望在不遍历数据帧的情况下执行此操作。在

我该怎么做?在


Tags: 数据函数元素dfdcsister单词wordnet
1条回答
网友
1楼 · 发布于 2024-04-28 20:23:13

您可以使用apply方法:

In [4]: df['C'] = df['B'].apply(wordnet.synsets)

In [5]: df
Out[5]: 
   A       B                                                  C
0  0  father  [Synset('father.n.01'), Synset('forefather.n.0...
1  9  mother  [Synset('mother.n.01'), Synset('mother.n.02'),...
2  4     kid  [Synset('child.n.01'), Synset('kid.n.02'), Syn...
3  5  sister  [Synset('sister.n.01'), Synset('sister.n.02'),...

然而,拥有一列列表通常不是一个非常有用的数据结构。最好将每个同义词放在自己的列中。您可以通过使回调函数返回pd.Series

^{pr2}$

(我选择只显示每个Synsetname属性;您当然可以使用

df.join(df['B'].apply(lambda word: pd.Series(wordnet.synsets(word))))

如果您想要Synset对象本身。)

相关问题 更多 >