将值分配给单个SFrame元素

时间:2016-02-22 08:11:40

标签: sframe

我想为SFrame中的单个元素(即单行和列)分配值。 我正在使用Python Notebook并导入graphlab。

我创建了一个尺寸为16364行x 37列的SFrame。 专栏'测试'包含零。

我使用以下语法设置值: sf [1] [' test'] = 3;

如果我输入: SF [1] ['测试']

  
    

然后我看到了正确的值,即" 3"

  

但如果我输入: sf

  
    

然后我只看到列的所有行的值为零' test'

  

同样适用于sf.head()或sf [' test']或sf [' test']。head()

我不明白为什么一个语法显示" 3"另一个没有的地方。 sf [1] [' test'] 3或0?

中的值是多少?

1 个答案:

答案 0 :(得分:4)

SFrame是不可变的,因此它们实际上不支持项目分配。你在这里看到差异的原因是因为

sf[1]['test']

实际上并不是指SFrame。 “sf [1]”返回一个字典,其中包含与SFrame列名匹配的键,以及与SFrame第二行匹配的值。当您为“sf [1] ['test']”分配一个数字时,您正在更改返回的字典中的“test”键的值,因此SFrame“sf”不参与分配。仅引用“test”列的第二个值并赋值“3”的正确方法是:

sf['test'][1] = 3

将返回此错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-c52dab41d5dd> in <module>()
----> 1 sf['test'][1] = 3

TypeError: 'SArray' object does not support item assignment