2
追加bcolz列
让我们首先构造一个ctable
:与Blaze
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)
谢谢你的时间!
感谢您的回答。你可以用一个(或多或少是任意的)函数'f'来完成这项工作吗?这是我的问题的核心 – cd98
您需要使用Blaze表达式。意味着你需要将你的函数转换成Blaze表达式。 – Tensor
这几乎回答了这个问题。你可以发布一个例子或两个特定的函数'f'用于在'bcolz'中创建一个新列吗?定义“f”的方式有多灵活?我会接受你的回答,谢谢! – cd98