我有两个数据框。我需要过滤其中一个以仅显示另一个中包含的值。
表_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
最佳答案
您可以连接两个表并指定how = 'left_semi'
左半连接
返回关系左侧与右侧匹配的值。
result_table = table_a.join(table_b, (table_a.AID == table_b.BID), \
how = "left_semi").drop("BID")
result_table.show()
+---+---+
|AID|foo|
+---+---+
| 1|bar|
| 2|bar|
+---+---+
关于Pyspark 过滤器,其中值位于另一个数据帧中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64455981/