2017-02-10 4 views
1

私はシナリオの下にあります2つのDataFramesの平等チェックの方法は?

私は唯一の1列 を含む2つのデータフレームを持っているが

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を使用することができますし、それが空の場合はチェック:1つのアクションだけ(take(1))とかなり速いものを使用します

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

。ここで

+0

データフレームには共通の価値観を持っていないかもしれませんが、equal.Jacekは平等のチェックについて尋ねていないことを。 –

1

データセットへの最初のイスト等しいデータセットの場合は、チェックは、第二されています

if(first.except(second).union(second.except(first)).count() == 0) 
    first == second 
else 
    first != second 
関連する問題