让我们首先构造一个ctable
:
import pandas as pd
import blaze as bl
df = pd.DataFrame({'x': range(4), 'y': [2., 4., 2., 4.]})
bl.odo(df, 'test.bcolz')
现在假设我想在这个表中添加一个名为“x_mod”的列。我试过了
test_table = bl.Data('test.bcolz')
def f(h):
return h*3
test_table['x_mod'] = test_table['x'].apply(f, dshape='int64')
#Or, I think equivalently:
#test_table['x_mod'] = test_table['x']*3
但它给
TypeError: 'InteractiveSymbol' object does not support item assignment
1) 如何分配“x_mod”列然后保存到磁盘?我正在使用大型数据库:计算内存中的列应该没问题,但是我无法将整个加载到ctable
内存中。
2)在相关问题上,这apply
对我也不起作用。难道我做错了什么?
#This doesn't work:
bl.compute(test_table['x'].apply(f, dshape='int64'))
#This I think should be equivalent, but does work:
bl.compute(test_table['x']*3)
谢谢你的时间!