2016-07-31 7 views
5

Frage: in Pandas beim Löschen von Duplikaten können Sie angeben, welche Spalten zu halten. Gibt es eine Entsprechung in Spark Datarefames?Funken Datenrahmen fallen Duplikate und halten Sie zuerst

Pandas:

df.sort_values('actual_datetime', ascending=False).drop_duplicates(subset=['scheduled_datetime', 'flt_flightnumber'], keep='first') 

Spark-Datenrahmen (I Funken 1.6.0) nicht über die Option KEEP

df.orderBy(['actual_datetime']).dropDuplicates(subset=['scheduled_datetime', 'flt_flightnumber']) 

'scheduled_datetime' Stellen Sie sich vor und 'flt_flightnumber' sind Spalten 6, 17 . Durch Tasten auf der Grundlage der Werte dieser Spalten erstellen, können wir auch

def get_key(x): 
    return "{0}{1}".format(x[6],x[17]) 

df= df.map(lambda x: (get_key(x),x)).reduceByKey(lambda x,y: (x)) 

dedupliziert aber wie geben Sie die erste Zeile zu halten und der anderen Duplikate loswerden? Was ist mit der letzten Reihe?

+4

Beim Ausführen von 'dropDuplicates' Sie die erste Zeile pro die Spalten Kombination halten spezifiziert und immer von dem Rest der Betrogenen befreien. Bist du sicher, dass dein Code nicht schon funktioniert? –

+0

Ich habe getestet und es scheint der Fall tatsächlich. –

+0

Aber was dann, wenn ich die letzte Reihe behalten möchte? Ich schaue nur auf eine Spalte für doppelte Werte – hipoglucido

Antwort

0

Verwendung dropDuplicates Methode standardmäßig hält es das erste Auftreten

Verwandte Themen