python - 如何过滤在 Pydatatable 框架的 I 表达式中传递的多个值的观察结果?

标签 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]})

在第一种情况下,我想过滤电影是唐或芝加哥的观察,如下代码所示,
DT_EX[((f.film=="Don") | (f.film=="Chicago")),:]

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

在过滤超过 5 或 10 个值的情况下,我们应该为这些多个值做一个逻辑表达式,这肯定是一项耗时的任务。

是否有任何数据表方法可以更快地完成它?好像有%in% %chin% R 中可用的过滤选项种类 data.table .

最佳答案

Python 等效于 R 的 %in运算符被简单地称为 in .不幸的是,这个算子还没有在datatable中实现,相关功能请求是https://github.com/h2oai/datatable/issues/699 .

同时,我建议使用标准 reduce带有 or_ 的仿函数运算符(operator):

>>> 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]

关于python - 如何过滤在 Pydatatable 框架的 I 表达式中传递的多个值的观察结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61494957/

相关文章:

python - 有没有更简单的方法来分配字典并循环更新?

python - 如何在我的 Fedora 发行版上安装 data.table

python - 有没有办法在 Python 数据表中对整个帧执行算术运算?

python - 在Python中递归复制文件

python - 实现具有可选最小值或最大值的数字的最佳方法是什么?

python - 在 Django 中上传视频并从视频创建缩略图

python - 将新列分配给数据表

Python data.table 行过滤正则表达式

python - 如何将整数数据表(来自 Python 数据表库)正确转换为 pandas Dataframe

python - tensorflow 抛出 "model_dir should be non-empty"