我想比较 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 | 不适用 |
答案 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|
#+---+---+---+-----+