我有两个数据框。我需要过滤其中一个,以便只显示另一个中包含的值。
表_a:
+---+----+
|AID| foo|
+---+----+
| 1 | bar|
| 2 | bar|
| 3 | bar|
| 4 | bar|
+---+----+
表b:
+---+
|BID|
+---+
| 1 |
| 2 |
+---+
最后,我想过滤掉table_a中的内容,只保留table_b中的ID,如下所示:
+--+----+
|ID| foo|
+--+----+
| 1| bar|
| 2| bar|
+--+----+
这就是我要做的
result_table = table_a.filter(table_b.BID.contains(table_a.AID))
但这似乎不起作用。看起来我得到了所有的值。
注意:除了pyspark.sql.functions import col
之外,我不能添加任何其他导入
3条答案
按热度按时间ssm49v7z1#
您可以连接这两个表并指定
how = 'left_semi'
left semi-join
从关系的左侧返回与右侧匹配的值。wgxvkvu92#
如果您在第二个 Dataframe 中有重复值或多个值,并且您希望仅采用不同的值,则以下方法可用于处理此类用例-
创建数据框架
获取 Dataframe 2中val列的所有唯一值,并接受集合/列表变量
dfty9e193#
这也应该行得通: