Python 如何为Pydatatable框架的I表达式中传递的多个值筛选观察值?

Python 如何为Pydatatable框架的I表达式中传递的多个值筛选观察值?,python,py-datatable,Python,Py Datatable,我有一个包含两列的数据框,如下所示 DT_EX = dt.Frame({'film':['Don','Warriors','Dragon','Chicago','Lion','Don','Chicago','Warriors'], 'gross':[400,500,600,100,200,300,900,1000]}) 在第一种情况下,我想过滤电影是Don或Chicago的观察结果,如下代码所示 DT_EX[((f.film=="Don") | (f.fil

我有一个包含两列的数据框,如下所示

DT_EX = dt.Frame({'film':['Don','Warriors','Dragon','Chicago','Lion','Don','Chicago','Warriors'],
                  'gross':[400,500,600,100,200,300,900,1000]})
在第一种情况下,我想过滤电影是Don或Chicago的观察结果,如下代码所示

DT_EX[((f.film=="Don") | (f.film=="Chicago")),:]
在一秒钟内,我将对3个值应用过滤器,如下所示:

DT_EX[((f.film=="Don") | (f.film=="Chicago") | (f.film=="Lion")),:]
在筛选超过5或10个值的情况下,我们应该为这些值创建一个逻辑表达式,这肯定是一项耗时的任务


有什么datatable方法可以更快地完成它吗?类似于%
%chin%
中有
%in%
一种在R
数据中可用的过滤选项。表
与中的R
%相当的Python操作符在
中被简单地称为
。不幸的是,这个操作符还没有在datatable中实现,相关的特性请求是

同时,我建议将标准的
reduce
函子与
运算符一起使用:

>>> import functools
>>> import operator
>>>
>>> films = ['Lion', 'Chicago', 'Don']
>>> filter = functools.reduce(operator.or_, (f.film == item for item in films))
>>> DT_EX[filter, :]
   | film     gross
-- + -------  -----
 0 | Don        400
 1 | Chicago    100
 2 | Lion       200
 3 | Don        300
 4 | Chicago    900

[5 rows x 2 columns]

请您澄清一下您的预期输出是什么,对于不使用R的用户(如我),您可能不理解这个问题。如何根据pydatatable sytax DT[I,J,…]在I的表达式中指定多个筛选器值。。。在上面提到的例子中,你可以看到框架应该返回与电影名称匹配的观察结果,如唐、芝加哥、狮子。。我的要求是,如果我必须从50个值中筛选出10个值,我应该如何在单个表达式中给出10个值?。在R中,它类似于DT[film%在%c中(“所需匹配”)。。我希望现在清楚了。