python - 当记录不按顺序时,df1 减去 df2 在 Pyspark 中无法按预期工作

标签 python dataframe hadoop pyspark

我有 2 个文件。在一个 file1 中,我有 998 记录,在另一个 file2 中,我有 1000 记录。现在,当我尝试 df1.subtract(df2) 时,它给出 998 记录,当我尝试 df2.subtract(df1) 时,它给出 1000 作为计数。我还在excel中手动比较过。除了 file2 中的附加记录外,所有记录都相同。因此,df2.subtract(df1)预期输出应该是 2。我哪里出错了?有没有办法匹配两个数据框,无论其行顺序如何?

df1:

enter image description here

df2:
enter image description here

第一种方法:

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 recordscounts 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/

相关文章:

hadoop - 我如何只下载 hdfs 而不是 hadoop?

python - 索引 Dataframe 类似于具有 2d 索引的 numpy ndarray

python - 使用 Google Sheets API 公开电子表格?

python - 实现接口(interface)的类的类型提示

python - 如何在图形上添加回归线和回归线方程

r - 将数据帧从一个转换为另一个

api - Hadoop 发布和新 API

hadoop - Hive QL/UDF/Impala 查询的包装器

python - 如何从 GroupBy.apply() 中删除多索引?

python - 前几行值的总和