当我运行时:
my_sframe['col_1'] = ''我得到一个空白列,这正是我想要的。
但是,当我运行时:
my_sframe['col_1'] = {}我得到一个错误,说是意外的数据类型。
SFrame应用编程接口没有解决这个问题,如下所示:
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
我不确定这种技术是否能创造出我想要的东西,我仍在尝试。如果有人对此有什么想法,请告诉我。
发布于 2016-12-28 11:40:41
我仍然愿意接受一个更有效的答案,但同时,如果其他人有这个问题,这里有一种方法可以创建一个字典的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。看起来有点复杂。我仍然很想知道为什么我们不能只对新列使用cast方法,而不是使用error:意外的数据类型。
https://stackoverflow.com/questions/41309740
复制相似问题