Pyspark 过滤器,其中值位于另一个数据帧中

标签 pyspark

我有两个数据框。我需要过滤其中一个以仅显示另一个中包含的值。

表_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/

相关文章:

python - Spark 非确定性 Pandas UDF 会出现什么问题

hadoop - 在同一台机器上安装 Spark 和 Hadoop

pyspark - Sagemaker PySpark : Kernel Dead

python - 读取Excel表格时出现异常

python-3.x - PySpark - 根据条件填充特定行

apache-spark - 与 repartition() 一起使用时,Spark cache() 不起作用

python - pyspark : Convert DataFrame to RDD[string]

python - 如何在 Pyspark 的 lambda 函数中附加 Dataframe 的特定列?

python - 在 Pyspark 中拆分 RDD 分区中的数组

python - 将 parquet 读取到 pandas FileNotFoundError