使用带有自定义对象的“datatable.FExpr”过滤 python 数据表

Filter python datatable using `datatable.FExpr` with custom objects

假设我填充了一个框架,其中一列包含一些自定义对象,如下所示:


class CustomObject:
    def __init__(self,x=None,label=None):
        self.x=x
        self.label=label


s1 = CustomObject(x="late", label="A")
s2 = CustomObject(x="pending", label="B")
s3 = CustomObject(x="closed", label="B")

from datatable import Frame, f
dt = Frame(a = [1,2,3], b = [s1,s2,s3], types=(int,"obj64"))

我想 select 帧中 label 属性具有某个值的行,比如说“B”。我想这样做:

dt[f.b.label=="B",:]

AttributeError: 'datatable.FExpr' object has no attribute 'label'

但是不行,我明白为什么不行了。

最好的替代方法是什么?

这是我试过的方法,而且有效。 有没有更好的方法?

b_objects = dt["b"].to_list()[0]
dt[[x for x in range(dt.nrows) if b_objects[x].label=="B"],:]

这个比较简单

dt[[b.label=="B" for b in dt["b"].to_list()[0]],:]