SFrame类型的列:Dictionary

时间:2016-12-24 02:15:32

标签: dataframe graphlab sframe

我跑的时候:

my_sframe['col_1'] = ''

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

但是当我跑步时:

my_sframe['col_1'] = {}

我收到一条错误消息,指出意外的数据类型。

SFrame API没有解决这个问题,如下所示:

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

我现在的理解是SFrame列不能是字典。

然而,出于好奇我尝试了这个:

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

我不确定这种技术能否创造我所追求的目标,我还在努力。如果有人对此有任何想法,请告诉我。

1 个答案:

答案 0 :(得分:0)

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

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。看起来有点复杂。我仍然想知道为什么我们不能仅使用强制转换方法来处理新列,而不是说错误:意外的数据类型。