为单个SFrame元素指定一个值

为单个SFrame元素指定一个值,sframe,Sframe,我想为SFrame中的单个元素(即单个行和列)赋值。 我正在使用Python笔记本并导入graphlab 我创建了一个尺寸为16364行x37列的SFrame。 列“test”包含零 我已使用以下语法设置该值: sf[1][‘测试’]=3 如果我随后键入: sf[1][“测试”] 然后我看到了正确的值,即“3” 但如果我输入: 科幻小说 然后我只看到“test”列的所有行的值都是零 对于sf.head()或sf['test']或sf['test'].head()也一样 我不明白为什么一种语法显示

我想为SFrame中的单个元素(即单个行和列)赋值。 我正在使用Python笔记本并导入graphlab

我创建了一个尺寸为16364行x37列的SFrame。 列“test”包含零

我已使用以下语法设置该值: sf[1][‘测试’]=3

如果我随后键入: sf[1][“测试”]

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

但如果我输入: 科幻小说

然后我只看到“test”列的所有行的值都是零

对于sf.head()或sf['test']或sf['test'].head()也一样


我不明白为什么一种语法显示“3”的值,而另一种语法则没有。sf[1]['test']3还是0中的值?

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

sf[1]['test']
实际上根本不是指SFrame。“sf[1]”返回一个字典,其中的键与SFrame的列名匹配,值与SFrame的第二行匹配。当您将一个数字分配给“sf[1]['test']”时,您正在更改返回的字典中“test”键的值,因此SFrame“sf”不参与分配。仅引用列“test”的第二个值并指定值“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
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1 sf[“测试”][1]=3
TypeError:“SArray”对象不支持项分配
---------------------------------------------------------------------------
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