Blaze Data字段映射抛出TypeError

时间:2016-02-04 23:22:23

标签: 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=['id', 'name', 'balance'])

我们可以使用pandas.DataFrame通过into轻松计算类似:

into(pd.DataFrame,s).balance.apply(abs)

然而,我在尝试做的时候遇到了很多困难:

s.balance.map(abs,schema='{b: int64}')

抛出TypeError: a bytes-like object is required, not 'int'等等。

这个问题似乎与关闭的Best approach to apply a function to a column or create a new column by applying a function to another one?有关,所以我不知道该转向何处。

ps:如果您认为这是微不足道的并想要将问题标记下来,请提供完整的工作答案。

1 个答案:

答案 0 :(得分:1)

尝试将'int64'作为datashape传递,而不是传入schema的值。它是第二个关键字参数,因此您无需为其命名。以下内容:

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.S。尽管从火焰中导入所有内容似乎都会使内置的absblaze.expr.abs相悖,但我认为这并不重要。