我有 2 个文件。在一个 file1
中,我有 998
记录,在另一个 file2
中,我有 1000
记录。现在,当我尝试 df1.subtract(df2)
时,它给出 998
记录,当我尝试 df2.subtract(df1)
时,它给出 1000
作为计数。我还在excel中手动比较过。除了 file2
中的附加记录外,所有记录都相同。因此,df2.subtract(df1)
的预期
输出应该是 2。我哪里出错了?有没有办法匹配两个数据框,无论其行顺序如何?
df1
:
第一种方法:
df1 = spark.read.option("header","true").csv("Sales_records-1.csv")
df2 = spark.read.option("header","true").csv("Sales_records-2.csv")
#Finding the rows which are not present in second dataframe
df3 = df2.exceptAll(df1)
最佳答案
所以,我发现我的数据有 unique ID
我使用下面的代码 find different records
当 counts are different in two datasets
。如果两个数据集中的计数不同,则使用 subtract
等内置方法或exceptAll
行不通的。我什至尝试了各种类型的joins
但没有成功。您可能必须像我一样做一些类似的事情。
df2.createOrReplaceTempView("temp2")
df1.createOrReplaceTempView("temp1")
spark.sql("select * from temp2 where `Order ID` not in (select `Order ID` from temp1)").show()
因此,这为我提供了我一直在寻找的 2 条记录 df2.subtract(df1)
希望这种方法有一天能对某人有所帮助!
关于python - 当记录不按顺序时,df1 减去 df2 在 Pyspark 中无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63501154/