如何比较pyspark中两个不同数据帧中的两列

时间:2017-12-21 06:18:27

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

我想将一个dataframe1中的“pitid”与另一个dataframe2的“pitid”进行比较,并希望提取dataframe1中缺少的行。

dataframe1:

 | id|marks|name|      pitid|
+---+-----+----+-----------+
|  1|    1|  FR| 1496875194|
|  2|    1|  US| -744211593|
|  5|    2|  DE|-1433680238|
|  4|    1|  DE| -366408878|
|  3|    3|  DE|  526286357|
+---+-----+----+-----------+

dataframe2:

| id|marks|name|      pitid|
+---+-----+----+-----------+
|  1|    1|  FR| 1496875194|
|  7|    9|  HY| -816101137|
|  6|    5|  FE| 1044793796|
|  2|    1|  US| -744211593|
|  5|    2|  DE|-1433680238|
|  4|    1|  DE| -366408878|
|  3|    3|  DE|  526286357|
+---+-----+----+-----------+

预期产出:

|  7|    9|  HY| -816101137|
|  6|    5|  FE| 1044793796|

1 个答案:

答案 0 :(得分:2)

您可以使用joins

val diff = df2.join(df1,df2.col("pitid")!=df1.col("pitid"),"left")

如果两个数据框中所有列的值相同,则可以使用except

df2.subtract(df1)

两者都会在dataframe2中给出记录,但不会在dataframe1

中给出记录