我跑的时候:
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
我不确定这种技术能否创造我所追求的目标,我还在努力。如果有人对此有任何想法,请告诉我。
答案 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。看起来有点复杂。我仍然想知道为什么我们不能仅使用强制转换方法来处理新列,而不是说错误:意外的数据类型。