【问题标题】:Assign a value to a single SFrame element为单个 SFrame 元素赋值
【发布时间】:2016-02-22 08:11:40
【问题描述】:

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

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

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

如果我接着输入: sf[1]['测试']

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

但如果我输入: 顺丰

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

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

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

【问题讨论】:

    标签: sframe


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多