比较两个数据帧和 pyspark 中一行的 return 结果

Compare two dataframes and return result of a row in pyspark

我想比较 Input DataFrame 和 Main DataFrame 以及 return 匹配行与输入数据的值,

考虑下面的例子

输入数据帧

A B C
1 0 1
0 0 0
1 1 1
0 1 1

主数据帧

A B C Point
1 1 1 P1
1 0 1 P2

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

输出数据帧

A B C Point
1 0 1 P2
0 0 0 NA
1 1 1 P1
0 1 1 NA

您可以使用左连接:

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|
#+---+---+---+-----+