比较两个数据帧并返回pyspark中一行的结果

时间:2021-02-09 06:09:21

标签: apache-spark pyspark apache-spark-sql pyspark-dataframes

我想比较 Input DataFrame 和 Main DataFrame 并将匹配行的值返回给输入数据,

考虑下面的例子

输入数据帧

<头>
A B C
1 0 1
0 0 0
1 1 1
0 1 1

主数据帧

<头>
A B C
1 1 1 P1
1 0 1 P2

将 Input 与主 DataFrame 进行比较后,结果应如下所示

输出数据帧

<头>
A B C
1 0 1 P2
0 0 0 不适用
1 1 1 P1
0 1 1 不适用

1 个答案:

答案 0 :(得分:1)

您可以使用左连接:

from pyspark.sql import functions as F

result_df = input_df.join(main_df, ["A", "B", "C"], "left") \
    .withColumn("Point", F.coalesce(F.col("Point"), F.lit("NA")))

result_df.show()

#+---+---+---+-----+
#|  A|  B|  C|Point|
#+---+---+---+-----+
#|  0|  0|  0|   NA|
#|  1|  0|  1|   P2|
#|  1|  1|  1|   P1|
#|  0|  1|  1|   NA|
#+---+---+---+-----+