Seite 1 von 1

Duplikate in einer Spalte eines df löschen

Verfasst: Mittwoch 21. Oktober 2020, 20:53
von Schokomuffin
Hallo alle zusammen,

ich wollte mal fragen, wie man mithilfe der set() Funktion alle Duplikate in einer Spalte eines Dataframes löschen kann.
Damit meine ich nicht nur die Duplikate zu löschen, sondern alle Zeichenfolgen, die mehrfach vorkamen.

Mein Ziel ist es alle Kundennummer herauszufiltern, die 2020 neu entstanden sind.
Das heißt, ich will aus meiner Spalte alle anderen Nummern, die in den Jahren davor schon vorkamen rauslöschen, sodass nur noch die von 2020 übrig bleiben.

Code: Alles auswählen

set(df.[df.Jahr <= 2019].Kundennummern)
So würde ich ja alle mehrfachen Kundennummern löschen.
Allerdings bleiben die Anderen weiterhin bestehen und ich will nur die, die einmal vorkommen und keine Duplikate haben.

Ich hoffe man versteht mein Problem. :(

Danke auf jeden Fall schon mal im Vorraus!

Re: Duplikate in einer Spalte eines df löschen

Verfasst: Mittwoch 21. Oktober 2020, 22:39
von snafu
Entweder ich verstehe dich nicht richtig oder du denkst falsch herum. Nach deiner Beschreibung würde ich es doch eher so machen:

Code: Alles auswählen

customer_ids = df[df.Jahr==2020].Kundennummer
unique_ids = sorted(set(customer_ids))
Rückgaben muss man immer auch an Namen binden, um sie zu behalten. Falls dein gezeigter Code dem Original entspricht, dann verschwindet das Ergebnis vom set()-Aufruf halt im luftleeren Raum.

EDIT: Und natürlich gibt es auch etwas aus der Pandas-Bubble. :)

Code: Alles auswählen

unique_ids = customer_ids.sort_values().unique()
Und sort_values() kann man sich natürlich sparen, falls die Kundennummern bereits sortiert vorliegen.

Re: Duplikate in einer Spalte eines df löschen

Verfasst: Donnerstag 22. Oktober 2020, 12:51
von Schokomuffin
Naja, ich habe es so verstanden, dass ich die Kundennummern daraufüberprüfen soll, ob sie nicht nur 2020, sondern auch in den Jahren davor bereits im Register standen.
Wenn die Kundennummern nicht nur mit dem Jahr 2020, sondern auch 2019, 2018,... auftaucht, dann soll eben diese Kundennummer aus der Liste von den Nummern in 2020 gelöscht werden.
Sodass ich am Ende nur noch Kundennummern übrig habe, die 2020 erschienen sind und in keinem Jahr davor.

Deswegen macht es keinen Sinn, nur die Kundennummern von 2020 in die Liste zu packen, weil ich ja dann nicht weiß, ob sie schonmal in den Jahren davor erschienen sind.

Entschuldige bitte meine schlechte Erklärung. :(

Re: Duplikate in einer Spalte eines df löschen

Verfasst: Donnerstag 22. Oktober 2020, 12:55
von Sirius3
@Schokomuffin: hast Du Dir schon die verschiedenen Methoden von Sets angeschaut. Da gibt es eine, die genau das macht, was Du möchtest: alle Kundennummern aus dem Jahr 2020 ohne die Kundennummern aus den Jahren davor.