Eine Zusammenfassung, wie Sie in einer Tabelle nach doppelten Elementen suchen und doppelte Werte entfernen.
Sie können dieselbe Verarbeitung wie "Entfernen von Duplikaten" ausführen, die in Excel häufig verwendet wird.
-Row0 und row5 sind vollständig dupliziert. ・ Alle Elemente von col0 und col4 werden dupliziert ・ Col2 ist row0 = row5, row1 = row4 ・ Col3 ist row0 = row5, row1 = row3
** Doppelte Zeilen sind True **.
** Standardmäßig wird die obere doppelte Zeile als False ** und die darunter liegenden Zeilen als True angesehen. Es ist auch möglich, die Unterseite optional auf True zu setzen. └ Entscheiden Sie beim Löschen, ob das Ziel oben oder unten ist. └ Es ist auch möglich, alle doppelten Zeilen zu löschen.
-Es ist auch möglich, das Ziel Spalte für Spalte Name anzugeben.
①duplicated ②duplicated(keep='last') ③duplicated(keep=False) ④duplicated(['aaa']) ⑤duplicated(['aaa','bbb'])
duplicated
df.duplicated()
#Ausgabe
row0 False
row1 False
row2 False
row3 False
row4 False
row5 True
dtype: bool
Nur Zeile 5 wird als Duplikat (True) bewertet.
Zeile = 0 und Zeile = 5 sind in allen Spalten gleich. Standardmäßig ist die erste Zeile False, daher wird Zeile 5 als doppelt bewertet.
Standard: "keep = 'first'" Die folgenden zwei Prozesse sind gleich.
df.duplicated()
df.duplicated(keep='first')
keep=last
df.duplicated(keep='last')
#Ausgabe
row0 True
row1 False
row2 False
row3 False
row4 False
row5 False
dtype: bool
row0 ist ein doppeltes Urteil (True).
keep=False
df.duplicated(keep=False)
#Ausgabe
row0 True
row1 False
row2 False
row3 False
row4 False
row5 True
dtype: bool
Zeile 0 und Zeile 5 sind doppelte Beurteilungen (True).
** ▼ Bei Vervielfältigung (['col0']) **
Geben Sie eine Spalte an
df.duplicated(['col0'])
#Ausgabe
row0 False
row1 True
row2 True
row3 True
row4 True
row5 True
dtype: bool
Da alle Elemente von col0 1 sind, werden alle außer der ersten Spalte als Duplikate beurteilt.
df.duplicated(['col0','col3'])
#Ausgabe
row0 False
row1 False
row2 False
row3 True
row4 False
row5 True
dtype: bool
Nur row3 und row5 sind True. └ Zeile3 von col0 und col3 ist True → True └ Zeile 5 von col0 und col3 ist True → True └ col0 und row1 sind True, row1 von col3 ist False → False
Die Zeile, die von der duplizierten Methode als doppelt (wahr) beurteilt wird, ist das Ziel des Löschens.
①drop_duplicates ②drop_duplicates(keep='last') ③drop_duplicates(keep=False) ④drop_duplicates(['aaa']) ⑤drop_duplicates(['aaa','bbb'])
drop_duplicates
df.drop_duplicates()
row5 wurde gelöscht.
Dupliziere row0 und row5. Da die oberste Zeile nicht als doppelt bewertet wird (Standard ist keep = 'first'), wurde Zeile 5 gelöscht.
keep='last'
df.drop_duplicates(keep='last')
keep=False
df.drop_duplicates(keep=False)S
Löschte sowohl row0 als auch row5.
Spalte angeben
df.drop_duplicates(['col0'])
Alle Elemente von col0 werden von row0 bis row5 dupliziert. Da es sich um eine andere doppelte Beurteilung als Zeile 1 handelt, wird sie gelöscht.
Spalte angeben
drop_duplicates(['col0'], keep='last')
Wenn keep = 'last' ist, ist das Endergebnis keine doppelte Prüfung.
Geben Sie mehrere Spalten an
df.drop_duplicates(['col2', 'col3'])
Zeile 5 gelöscht.
Die Duplikate in Spalte 2 sind Zeile1, Zeile4, Zeile5. Die Duplikate in Spalte 3 sind Zeile 1 und Zeile 5. ⇛ Common ist row1 und row5. Da die erste doppelte Zeile so eingestellt ist, dass sie erhalten bleibt (Standard ist keep = 'first'), wird nur Zeile 5 gelöscht.
① Bestätigung doppelter Zeilennamen ② Löschen Sie den doppelten Zeilennamen und überprüfen Sie
** ▼ Verfügbare Optionen **
keep='first'
└ Beurteilen Sie keine Duplikate für den Namen der ersten Zeile
keep='last'
└ Beurteilen Sie den letzten Zeilennamen von Duplikaten nicht als Duplikate
keep=False
└ Alle doppelten Zeilennamen gelten als doppelte
└ Wenn False, ist kein Kontingent erforderlich
Da die Option ".duplicated ()" standardmäßig "keep = 'first'" ist, ist die erste doppelte Zeile False und die zweite und nachfolgende Zeile True.
Suchen Sie nach doppelten Zeilennamen
df.index.duplicated()
#Ausgabe
# array([False, False, False, False, True, True])
▼ Originaltabelle
Die Namen der 0. und 5. Zeile sowie die Namen der 1. und 4. Zeile werden dupliziert. ⇛ Das 5. und 4. sind doppelte Urteile.
Alle doppelten Zeilennamen sind True
df.index.duplicated(keep=False)
#Ausgabe
# array([ True, True, False, False, True, True])
So erhalten Sie eine Liste mit Zeilennamen, indem Sie doppelte Zeilennamen entfernen.
Wird verwendet, wenn Sie den Zeilennamen überprüfen möchten.
Holen Sie sich durch Löschen des Zeilennamens
df.index.drop_duplicates()
#Ausgabe
# Index(['AAA', 'BBB', 'CCC', 'DDD'], dtype='object')
Die zweiten "AAA" und "BBB", die dupliziert wurden, wurden gelöscht.
▼ Originaltabelle
df.columns.duplicated()
df.columns.drop_duplicates()
└ ".columns": Extrahieren Sie die Spaltennamen der Tabelle mit Liste.
Recommended Posts