在python blaze对象中只获取数字列

时间:2016-01-12 07:24:57

标签: python python-3.x pandas blaze

我有一个像这样的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的列名。例如,此处只有idamount具有数值。

我可以使用dshape获取列类型,如下所示

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

但不确定如何正确使用它。我知道如何使用pandas函数在_get_numeric_data()中执行相同的操作。在blaze

中寻找类似的功能或代码

1 个答案:

答案 0 :(得分: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*类型?