Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当记录不符合顺序时,df1减去在Pyspark中未按预期工作的df2_Python_Dataframe_Hadoop_Pyspark - Fatal编程技术网

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
,但即使返回相同的结果。