Ibis 中是否有“ANY”或“ANY_VALUE”表达式可以让我比较子查询返回的一组值中的值?

问题描述 投票:0回答:1

t = ibis.memtable({'col0': [-2, -5, -1, 0, 1, 8, 7], 'col1': [0, -2, 4, 5, 6, 8, 7]})
。 我想找到 col0 是 col1 中任意值的所有行。

在 SQL 中,我可能会这样做:

SELECT
  *
FROM
  t
WHERE
  col0 = ANY(SELECT col1 FROM t)

(或

ANY_VALUE

是否有

ANY
ANY_VALUE
的列表达式或ibis方法?或者解决方法?

我尝试查看文档,但没有找到答案。

python dataframe ibis
1个回答
0
投票

您可以使用我们稍微专业化的

.any()
版本和
view()
来表达这种计算,以确保您要比较的列针对搜索列的每个值进行完整扫描:

In [17]: from ibis.interactive import *

In [18]: t = ibis.memtable({"a": [1, 2, 3, 4, 5, 6], "b": [3, 4, 5, 6, 1, 2]})

In [19]: t[(t.a > t.view().b).any()]
Out[19]:
┏━━━━━━━┳━━━━━━━┓
┃ a     ┃ b     ┃
┡━━━━━━━╇━━━━━━━┩
│ int64 │ int64 │
├───────┼───────┤
│     5 │     1 │
│     2 │     4 │
│     4 │     6 │
│     3 │     5 │
│     6 │     2 │
└───────┴───────┘
© www.soinside.com 2019 - 2024. All rights reserved.