Polars - 按行元素过滤另一个 DataFrame 的 DataFrame

use*_*048 4 python dataframe python-polars

我想解决极地地区熊猫所描述的问题。

特别是,考虑一个df1如下所示的 DataFrame:

c  k  l
A  1  a
A  2  b
B  2  a
C  2  a
C  2  d
Run Code Online (Sandbox Code Playgroud)

另一个 DataFrame 的名称df2如下:

c  l
A  b
C  a
Run Code Online (Sandbox Code Playgroud)

在上面问题中概述,我想过滤df1不在.df2

特别是,预期结果如下所示:

c  k  l
A  1  a
B  2  a
C  2  d
Run Code Online (Sandbox Code Playgroud)

对于上面链接的问题,得票最多的答案使用了从所需列构建的多重索引。我不明白这在极地是如何运作的。

Her*_*cks 5

看起来反连接可以解决这个问题:

df1 = pl.DataFrame({'c': ['A', 'A', 'B', 'C', 'C'],
                    'k': [1, 2, 2, 2, 2],
                    'l': ['a', 'b', 'a', 'a', 'd']})
df2 = pl.DataFrame({'c': ['A', 'C'],
                    'l': ['b', 'a']})

df1.join(df2, on=["c", "l"], how="anti")
Run Code Online (Sandbox Code Playgroud)