首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Blaze追加bcolz列

使用Blaze追加bcolz列
EN

Stack Overflow用户
提问于 2015-07-22 02:56:08
回答 1查看 432关注 0票数 2

让我们首先构造一个ctable

代码语言:javascript
复制
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‘的列。我试过了

代码语言:javascript
复制
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

但它给了我们

代码语言:javascript
复制
TypeError: 'InteractiveSymbol' object does not support item assignment

1)如何分配'x_mod‘列并保存到磁盘?我正在使用大型数据库:在内存中计算列应该可以,但我无法在内存中加载整个ctable

2)在一个相关的问题上,apply也不适用于我。我做错了什么吗?

代码语言:javascript
复制
#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)

耽误您时间,实在对不起!

EN

回答 1

Stack Overflow用户

发布于 2016-12-09 20:45:13

您可以在Blaze中使用变换方法,如下所示:

代码语言:javascript
复制
bz.transform(df, sepal_ratio = df.sepal_length / df.sepal_width   )

对于其他函数,需要使用Blaze表达式:

代码语言:javascript
复制
bz.transform(df, sepal_ratio = BLAZE_symbolic_Expression(df.Col1, df.col2)  )

它会将compute列添加到数据帧中。Doc在这里:https://blaze.readthedocs.io/en/latest/expressions.html

例如,您可以使用map:

代码语言:javascript
复制
from datetime import datetime
yourexpr = df.col1.map(datetime.utcfromtimestamp)
bz.transform(df, sepal_ratio=yourexpr)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31547384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档