pandas
drop_duplicates
Funkcja jest wielki dla „uniquifying” do dataframe. Jednak jednym z argumentów słów kluczowych do przekazania jest take_last=True
lub take_last=False
, podczas gdy chciałbym usunąć wszystkie wiersze, które są duplikatami w podzbiorze kolumn. czy to możliwe?
A B C
0 foo 0 A
1 foo 1 A
2 foo 1 B
3 bar 1 A
Jako przykład chciałbym spaść wiersze, które odpowiadają na kolumnach A
i C
tak to powinno spaść wiersze 0 i 1.
python
pandas
duplicates
Jamie Bull
źródło
źródło
df.reindex(df.iloc[:,[0,2]].drop_duplicates(keep=False).index)
?df.drop_duplicates(subset=[df.columns[0:2]], keep = False)
Chcę tylko dodać do odpowiedzi Bena na drop_duplicates :
keep
: {'pierwsza', 'ostatnia', False}, domyślna 'pierwsza'pierwszy: Usuń duplikaty z wyjątkiem pierwszego wystąpienia.
last: Usuń duplikaty z wyjątkiem ostatniego wystąpienia.
Fałsz: usuń wszystkie duplikaty.
Więc ustawienie
keep
Fałsz da ci pożądaną odpowiedź.źródło
Jeśli chcesz, aby wynik był przechowywany w innym zbiorze danych:
lub
Jeśli ten sam zbiór danych wymaga aktualizacji:
Powyższe przykłady usuwają wszystkie duplikaty i zachowują jeden, podobnie jak
DISTINCT *
w SQLźródło
używać
groupby
ifilter
źródło
Właściwie upuść tylko wiersze 0 i 1 (zachowywane są wszystkie obserwacje zawierające dopasowane A i C):
Ale podejrzewam, że naprawdę chcesz tego (zachowywana jest jedna obserwacja zawierająca dopasowane A i C):
Edytować:
Teraz jest znacznie jaśniej, dlatego:
źródło
df.drop_duplicates(['A','C'])
ponieważ domyślnie zachowuje jedną obserwację jako pierwszą lub ostatnią, jak wspomniałem w pytaniu - chociaż właśnie zdałem sobie sprawę, że słowo kluczowe jest błędne, pisząc z pamięci. Chcę usunąć wszystkie wiersze, które są identyczne w interesujących nas kolumnach (A i C w przykładowych danych).Wypróbuj te różne rzeczy
lub
lub
źródło