2017-02-10 57 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