2016-12-24 45 views
0

當我運行: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只有我使用word_count字典從頭開始,通過import string

這是一條雙向街道,還是.count_words出現異常,我不應該指望能夠重現那種數據轉換嗎?

請指教,

謝謝

UPDATE

這裏似乎是在GitHub上一些相關的信息:

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

我不知道,如果這種技術可以創造我以後,我仍然在努力。讓我知道是否有人對此有任何想法。

回答

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是字典。似乎有點複雜。我仍然很想知道爲什麼我們不能僅僅爲新的列使用強制轉換方法,而不是說錯誤:意外的數據類型。