比较两个数据帧和 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|
#+---+---+---+-----+
我想比较 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|
#+---+---+---+-----+