使用带有自定义对象的“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]],:]
假设我填充了一个框架,其中一列包含一些自定义对象,如下所示:
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]],:]