2

我有一个blaze像这样的数据对象

import blaze as bz

bdata = bz.Data([(1, 'Alice', 100.9),
           (2, 'Bob', 200.6),
           (3, 'Charlie', 300.45),
           (5, 'Edith', 400)],
          fields=['id', 'name', 'amount'])
bdata

  | id | name   | amount
--------------------------
0 | 1  | Alice  | 100.90
1 | 2  | Bob    | 200.60
2 | 3  | Charlie| 300.45
3 | 5  | Edith  | 400.00

我只想获取那些具有numeric datatypes.For example here onlyid并且amount具有数值的列名。

我可以使用dshape如下方式获取列类型

bdata.dshape
dshape("4 * {id: int64, name: string, amount: float64}")

但不确定如何正确利用它。我知道如何在pandas使用_get_numeric_data()函数时做同样的事情。寻找类似的功能或代码blaze

4

1 回答 1

0

可能有更简单的方法。这是实现它的一种方法

In [75]:
def get_numeric_cols(dshape):
    shape = dshape.parameters[-1].dict
    cols = []
    for k in shape:
        type = str(shape[k])
        if type.startswith("int") or type.startswith("float"):
            cols.append(k)
    return cols

In [76]: get_numeric_cols(bdata.dshape)
Out[76]: ['amount', 'id']

基本上,寻找int*float*类型?

于 2016-01-12T10:21:23.840 回答