当我通过DataFrame.apply()传递一个函数时,我得到的值被我假设的对象类型所封装。我现在已经看到了两个应用程序的错误:一个使用NLTK的Wordnet库(返回Synset('value'),另一个使用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我将使用类似的结构,为几个不同类别的相当长的术语列表构建一个由引理、定义和超限组成的矩阵,因此,一个可伸缩的解决方案将是理想的。
提前谢谢你的时间。
发布于 2018-09-17 15:21:00
通过将.name()添加到x来解决这个问题。参见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.01https://stackoverflow.com/questions/52370345
复制相似问题