Python Blaze数据字段映射抛出类型错误
我最近开始将我的数据探索代码集从Python Blaze数据字段映射抛出类型错误,python,blaze,Python,Blaze,我最近开始将我的数据探索代码集从pandas移动到blaze。我遇到了以下问题 假设: from blaze import * s = Data([(1, 'Alice', 100), ... (2, 'Bob', -200), ... (3, 'Charlie', 300), ... (4, 'Denis', 400), ... (5, 'Edith', -500)], ... fields=[
pandas
移动到blaze
。我遇到了以下问题
假设:
from blaze import *
s = Data([(1, 'Alice', 100),
... (2, 'Bob', -200),
... (3, 'Charlie', 300),
... (4, 'Denis', 400),
... (5, 'Edith', -500)],
... fields=['id', 'name', 'balance'])
我们可以使用pandas.DataFrame
通过进入
轻松计算如下内容:
into(pd.DataFrame,s).balance.apply(abs)
然而,我在尝试做以下事情时遇到了严重困难:
s.balance.map(abs,schema='{b: int64}')
抛出一个类型错误:需要一个类似字节的对象,而不是'int'
这个问题似乎与哪个已经结束有关,所以我不知道该转向哪里
ps:如果你觉得这很琐碎,想把问题记下来,也请提供一个完整的工作答案。试着将
'int64'
作为数据形状传递,而不是为模式
传递一个值。这是第二个关键字参数,因此不需要命名它。以下是:
from blaze import *
s = Data([(1, 'Alice', 100),
(2, 'Bob', -200),
(3, 'Charlie', 300),
(4, 'Denis', 400),
(5, 'Edith', -500)],
fields=['id', 'name', 'balance'])
s.balance.map(abs, 'int64')
为我工作,并制作:
balance
0 100
1 200
2 300
3 400
4 500
p、 虽然从blaze中导入所有东西似乎在用blaze.expr.abs
冲击内置的abs
,但我认为这并不重要。我想指出,s=transform(s,b=abs(s.balance))
做了正确的事情。但在这个问题中,我使用了abs
函数作为任何作用于一个变量/字段的函数的易于理解的占位符。问题仍然是,def FindC(word):返回word.lower().find('c')
不能像在transform(s,hasC=FindC(s.name))中那样使用。
。这样做,我得到了AttributeError:'Field'对象没有属性'lower'
我仍然得到了long类型错误:需要一个类似字节的对象,而不是'int'
我使用的是blaze
版本0.9.1
。您使用的是什么版本?我使用的是0.9.0
。我发现在使用列表创建数据
实例后,我也遇到了一个错误,就像上面所做的那样。我玩了一会儿,我认为需要使用datashape
参数,而不是schema
。我会更新答案。