首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DataFrame.apply()生成值时返回Synset('')包装器

使用DataFrame.apply()生成值时返回Synset('')包装器
EN

Stack Overflow用户
提问于 2018-09-17 14:45:27
回答 1查看 50关注 0票数 0

当我通过DataFrame.apply()传递一个函数时,我得到的值被我假设的对象类型所封装。我现在已经看到了两个应用程序的错误:一个使用NLTK的Wordnet库(返回Synset('value'),另一个使用Datetime (‘value’)。

我引用了一些例子来生成下面的代码,所以我不知道我做错了什么。

我尝试使用这个函数--Applying synsets to pandas(以及另一个变体)--但是由于某种原因,它返回了一个Series (尽管我指定它是一个数据),所以.applymap()不能工作。使用.map()和简单的.apply()的变体也是有问题的。

下面是我所拥有的(使用熊猫和一些nltk库):

代码语言:javascript
复制
df_agri_clean['Synsets'] = [x[0] for x in df_agri_clean['Category'].apply(wordnet.synsets)]
df_agri_clean

这是输出:

代码语言:javascript
复制
    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')

我想要的产出是:

代码语言:javascript
复制
    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

我将使用类似的结构,为几个不同类别的相当长的术语列表构建一个由引理、定义和超限组成的矩阵,因此,一个可伸缩的解决方案将是理想的。

提前谢谢你的时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-17 15:21:00

通过将.name()添加到x来解决这个问题。参见Alvas here的答案。

代码语言:javascript
复制
df_agri_clean['Synsets'] = [x[0].name() for x in df_agri_clean['Category'].apply(wordnet.synsets)]
print(df_agri_clean['Synsets'])

输出:

代码语言:javascript
复制
    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52370345

复制
相关文章

相似问题

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