2017-02-10 4 views
1

ich unten Szenario haben:Wie wird die Gleichheitsprüfung von zwei DataFrames durchgeführt?

Ich habe 2 Datenrahmen nur 1 Spalte enthält Lets

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

Grundsätzlich sind diese Werte Tasten sagen, und ich bin eine Parkett-Datei von DF1 zu schaffen, wenn die Schlüssel in DF1 nicht sind in DF2 (Im aktuellen Beispiel sollte es false zurückgeben). Meine heutige Art und Weise meine Anforderung zu erreichen, ist:

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

Das Problem bei diesem Ansatz ist, ich Action-Elemente 4 mal nenne, die sicher nicht der beste Weg ist. Kann mir jemand den besten Weg vorschlagen, dies zu erreichen?

Antwort

8

Sie können intersect verwenden, um die Werte, die für beide Datenrahmen zu bekommen, und dann prüfen, ob es leer ist:

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

, dass nur eine Aktion (take(1)) und eine ziemlich schnell ein verwenden. Hier

+0

Die Datenrahmen keine gemeinsamen Werte haben können, aber nicht sein equal.Jacek über Gleichheitsprüfung gefragt. –

1

ist die Überprüfung, ob Datensatz erste ist gleich Dataset Sekunde:

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