让
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方法?或者解决方法?
我尝试查看文档,但没有找到答案。
您可以使用我们稍微专业化的
.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 │
└───────┴───────┘