[FIXED] Wie kann man DataFrame aggregieren und Duplikate basierend auf Werten in zwei Spalten in Python Pandas löschen?

Ausgabe

Ich habe DataFrame in Python Pandas wie unten:

ID  | COL1| COL2 | COL3
----------|------|------
123 | XXX | 0    | 1
123 | XXX | 1    | 1
444 | ABC | 1    | 1
444 | ABC | 1    | 1 
555 | PPP | 0    | 0

Und ich muss auf diese Weise Duplikate über DF einfügen:

  • wenn in COL2 oder COL3 mindestens einmal ‘1’ ist, dann sollte in diesen Spalten für ID 1 stehen (egal wie oft er in den genannten Spalten 0 hatte)
  • Rest der Spalten sollte noch in der Ausgabe sein
  • In COL1 gibt es keine Duplikate pro ID

Als Ergebnis brauche ich eine Ausgabe wie unten (ich habe viel mehr Spalten, also brauche ich in der Ausgabe nicht nur ID, COL2, COL3, sondern ID, COL1, COL2, COL3)

ID  | COL1| COL2 | COL3
----|-----|------|-----
123 | XXX | 1    | 1
444 | ABC | 1    | 1
555 | PPP | 0    | 0

Wie kann ich das in Python Pandas machen?

Lösung

Verwenden Sie ein groupby.max:

out = df.groupby(['ID', 'COL1'], as_index=False).max()

Ausgang:

    ID COL1  COL2  COL3
0  123  XXX     1     1
1  444  ABC     1     1
2  555  PPP     0     0


Beantwortet von –
mozway


Antwort geprüft von –
Pedro (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like