当我通过DataFrame.apply()传递函数时,我得到的值包装在我假定的对象类型中。我现在已经在两个应用程序中看到了此错误:一个使用NLTK的Wordnet库(返回Synset('value'),另一个使用Datetime(Datetime('value'))。
我已经使用了许多示例来生成下面的代码,所以我对自己做错的事情不知所措。
我尝试使用此功能-Applying synsets to pandas(以及另一个变体)-但由于某种原因,它返回一个Series(即使我指定它是一个数据框),因此.applymap( )不起作用。使用.map()和仅使用.apply()进行变体也存在问题。
这就是我所拥有的(使用熊猫和一些nltk库):
df_agri_clean['Synsets'] = [x[0] for x in df_agri_clean['Category'].apply(wordnet.synsets)]
df_agri_clean
以下是输出:
Category Synsets
0 agricultural Synset('agricultural.a.01')
1 domestic Synset('domestic.n.01')
2 animal Synset('animal.n.01')
3 services Synset('services.n.01')
5 food Synset('food.n.01')
我想要的输出是:
Category Synsets
0 agricultural agricultural.a.01
1 domestic domestic.n.01
2 animal animal.n.01
3 services services.n.01
5 food food.n.01
我将使用类似的结构来构建引理,定义和上位词的矩阵,以跨几个不同类别构建相当长的术语列表,因此可伸缩的解决方案将是理想的。
提前感谢您的时间。
答案 0 :(得分:0)
通过将.name()添加到x [0]来解决该问题。参见Alvas here的回答。:
df_agri_clean['Synsets'] = [x[0].name() for x in df_agri_clean['Category'].apply(wordnet.synsets)]
print(df_agri_clean['Synsets'])
输出:
Category Synsets
0 agricultural agricultural.a.01
1 domestic domestic.n.01
2 animal animal.n.01
3 services services.n.01
5 food food.n.01