Python 当记录不符合顺序时,df1减去在Pyspark中未按预期工作的df2
我有两个文件。在一个Python 当记录不符合顺序时,df1减去在Pyspark中未按预期工作的df2,python,dataframe,hadoop,pyspark,Python,Dataframe,Hadoop,Pyspark,我有两个文件。在一个file1中,我有998记录,在另一个file2中,我有1000记录。现在,当我尝试df1.subtract(df2)时,它给出998记录,当我尝试df2.subtract(df1)时,它给出1000作为计数。我还在excel中手动比较了它。除了文件2中的附加记录外,所有记录都相同。因此,df2.subtract(df1)的预期输出应该是2。我哪里做错了?有没有办法匹配两个数据帧,而不考虑其行顺序 df1: df2: 第一种方法: df1 = spark.read.opt
file1
中,我有998
记录,在另一个file2
中,我有1000
记录。现在,当我尝试df1.subtract(df2)
时,它给出998
记录,当我尝试df2.subtract(df1)
时,它给出1000
作为计数。我还在excel中手动比较了它。除了文件2中的附加记录外,所有记录都相同。因此,df2.subtract(df1)
的预期输出应该是2。我哪里做错了?有没有办法匹配两个数据帧,而不考虑其行顺序
df1
:
df2
:
第一种方法:
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)
因此,我发现我的数据具有唯一ID
,当两个数据集中的计数不同时,我使用下面的代码查找不同的记录。如果两个数据集中的计数不同,内置方法如subtract
或exceptAll
将不起作用。我甚至尝试了各种类型的连接
,但都没有成功。你可能不得不做一些和我一样的事情
df2.createOrReplaceTempView("temp2")
df1.createOrReplaceTempView("temp1")
spark.sql("select * from temp2 where `Order ID` not in (select `Order ID` from temp1)").show()
因此,这给了我从df2.subtract(df1)
希望有一天这种方法能帮助别人 是否需要计算这些文件中的1000-998
或有多少值不同?如果保持两个文件中的行顺序,则值相同。当我尝试df2.subtract(df1)
时,我应该得到2,因为df2
是通过读取file2
创建的,它还有两条记录df2.except(df1)
except
在scala
中工作,而不是在Python中。对于Python,它的exceptAll
,但即使返回相同的结果。