2017-02-10 35 views
1

我有以下情形:如何做两个DataFrames的平等检查?

我有仅包含1列 2个dataframes比方说

DF1=(1,2,3,4,5) 
DF2=(3,6,7,8,9,10) 

基本上那些值是密钥和我创建DF1的镶木文件,如果在DF1中的键不是在DF2中(在当前的例子中它应该返回false)。我目前的方式达到我的要求是:

val df1count= DF1.count 
val df2count=DF2.count 
val diffDF=DF2.except(DF1) 
val diffCount=diffDF.count 
if(diffCount==(df2count-df1count)) true 
else false 

这种方法的问题是我打电话4次,这当然不是最好的方法。有人可以建议我实现这一目标的最佳方法吗?

回答

8

您可以使用intersect获得通用于DataFrames的值,然后检查它是否是空的:

DF1.intersect(DF2).take(1).isEmpty 

这将只使用一个动作(take(1))和相当快的。

+0

的dataframes可能没有共同的价值观,而是不equal.Jacek被问及平等检查。 –

1

这里是检查,如果数据集第一IST等于数据集第二:

if(first.except(second).union(second.except(first)).count() == 0) 
    first == second 
else 
    first != second