首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SFrame列的类型:字典

SFrame列的类型:字典
EN

Stack Overflow用户
提问于 2016-12-24 10:15:32
回答 1查看 519关注 0票数 0

当我运行时:

代码语言:javascript
复制
my_sframe['col_1'] = ''

我得到一个空白列,这正是我想要的。

但是,当我运行时:

代码语言:javascript
复制
my_sframe['col_1'] = {}

我得到一个错误,说是意外的数据类型。

SFrame应用编程接口没有解决这个问题,如下所示:

https://turi.com/products/create/docs/generated/graphlab.SFrame.html

在这一点上,我的理解是SFrame列不能是字典。

然而,出于好奇心,我尝试了一下:

代码语言:javascript
复制
my_sframe['col_1'] = graphlab.text_analytics.count_words('my_text')

type(my_sframe['col_1'][1])

out: dict

这个结果与我之前的理解截然相反。

我想要的是一个字典列,每一行都有自己的字典,就像.count_words一样,只是我使用的是通过import string从头开始制作的word_count字典。

这是一条双行道,还是.count_words是一个例外,我不应该期望能够重现这种数据转换?

请指教,

谢谢

更新

以下是有关GitHub的一些相关信息:

https://github.com/turi-code/how-to/blob/master/sframe_pack.py

我不确定这种技术是否能创造出我想要的东西,我仍在尝试。如果有人对此有什么想法,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2016-12-28 11:40:41

我仍然愿意接受一个更有效的答案,但同时,如果其他人有这个问题,这里有一种方法可以创建一个字典的SFrame列。我刚想通了:

代码语言:javascript
复制
def count_words(text):
    words = text.split()
    wordfreq = {}
    for x in words:
        if x not in wordfreq:
            wordfreq[x] = 0
        wordfreq[x] += 1
    return wordfreq

sframe['word_count'] = sframe['text'].apply(count_words)

您会注意到dtype是dict。看起来有点复杂。我仍然很想知道为什么我们不能只对新列使用cast方法,而不是使用error:意外的数据类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41309740

复制
相关文章

相似问题

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