Das entfernen von Duplikaten aus Pandas dataFrame mit Voraussetzung für die Beibehaltung der ursprünglichen
Vorausgesetzt, ich habe Folgendes DataFrame:
A | B
1 | Ms
1 | PhD
2 | Ms
2 | Bs
Ich möchten entfernen Sie die doppelten Zeilen mit Bezug auf Spalte A und ich möchte Sie behalten die Zeile mit dem Wert 'Promotion' in der Spalte B als das original, wenn ich nicht finden, einen 'PhD', ich will behalten Sie die Zeile mit 'Bs' in der Spalte B.
Ich versuche, mit
df.drop_duplicates('A')
Bedingung
- wenn Sie Sortieren können, B alphabetisch, dann können Sie mit df.drop_duplicates('A', take_last=True), aber dann hätte man Ms manchmal anstelle von Bs.
- Ja, ich hielt diese Idee. Aber es würde nicht funktionieren
- Würden Sie bereit sein, nicht verwenden drop_duplicates?
- ja, Wenn es funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sortierung ein dataframe mit einer benutzerdefinierten Funktion:
Unserer Funktion zum Sortieren:
cmp = lambda x:2 if 'PhD' in x else 1 if 'Bs' in x else 0
In Aktion:
sort_df(df,'B',cmp).drop_duplicates('A', take_last=True)
Unter der Annahme der Eindeutigkeit der B-Wert gegeben, Einen Wert, und dass jeder Wert ist eine Zeile mit Bs in der Spalte B:
geben Sie ein dataframe mit dem PhD Zeilen, die Sie wollen.
Dann entfernen Sie alle PhD und Ms von df:
Dann verketten df und df2:
Dann können Sie drop_duplicates wie Sie wollte:
Erwägen Sie die Verwendung
Categoricals
. Sie sind eine schöne war die Gruppe /order text nicht alphabetisch (unter anderem.)