Ich habe eine Liste von Artikeln, bei denen wahrscheinlich Exportprobleme auftreten. Ich möchte eine Liste der doppelten Elemente erhalten, damit ich sie manuell vergleichen kann. Wenn ich versuche, die duplizierte Methode von pandas zu verwenden , wird nur das erste Duplikat zurückgegeben. Gibt es eine Möglichkeit, alle Duplikate zu erhalten und nicht nur das erste?
Ein kleiner Unterabschnitt meines Datensatzes sieht folgendermaßen aus:
ID,ENROLLMENT_DATE,TRAINER_MANAGING,TRAINER_OPERATOR,FIRST_VISIT_DATE
1536D,12-Feb-12,"06DA1B3-Lebanon NH",,15-Feb-12
F15D,18-May-12,"06405B2-Lebanon NH",,25-Jul-12
8096,8-Aug-12,"0643D38-Hanover NH","0643D38-Hanover NH",25-Jun-12
A036,1-Apr-12,"06CB8CF-Hanover NH","06CB8CF-Hanover NH",9-Aug-12
8944,19-Feb-12,"06D26AD-Hanover NH",,4-Feb-12
1004E,8-Jun-12,"06388B2-Lebanon NH",,24-Dec-11
11795,3-Jul-12,"0649597-White River VT","0649597-White River VT",30-Mar-12
30D7,11-Nov-12,"06D95A3-Hanover NH","06D95A3-Hanover NH",30-Nov-11
3AE2,21-Feb-12,"06405B2-Lebanon NH",,26-Oct-12
B0FE,17-Feb-12,"06D1B9D-Hartland VT",,16-Feb-12
127A1,11-Dec-11,"064456E-Hanover NH","064456E-Hanover NH",11-Nov-12
161FF,20-Feb-12,"0643D38-Hanover NH","0643D38-Hanover NH",3-Jul-12
A036,30-Nov-11,"063B208-Randolph VT","063B208-Randolph VT",
475B,25-Sep-12,"06D26AD-Hanover NH",,5-Nov-12
151A3,7-Mar-12,"06388B2-Lebanon NH",,16-Nov-12
CA62,3-Jan-12,,,
D31B,18-Dec-11,"06405B2-Lebanon NH",,9-Jan-12
20F5,8-Jul-12,"0669C50-Randolph VT",,3-Feb-12
8096,19-Dec-11,"0649597-White River VT","0649597-White River VT",9-Apr-12
14E48,1-Aug-12,"06D3206-Hanover NH",,
177F8,20-Aug-12,"063B208-Randolph VT","063B208-Randolph VT",5-May-12
553E,11-Oct-12,"06D95A3-Hanover NH","06D95A3-Hanover NH",8-Mar-12
12D5F,18-Jul-12,"0649597-White River VT","0649597-White River VT",2-Nov-12
C6DC,13-Apr-12,"06388B2-Lebanon NH",,
11795,27-Feb-12,"0643D38-Hanover NH","0643D38-Hanover NH",19-Jun-12
17B43,11-Aug-12,,,22-Oct-12
A036,11-Aug-12,"06D3206-Hanover NH",,19-Jun-12
Mein Code sieht derzeit so aus:
df_bigdata_duplicates = df_bigdata[df_bigdata.duplicated(cols='ID')]
Es gibt ein paar doppelte Gegenstände. Wenn ich jedoch den obigen Code verwende, erhalte ich nur den ersten Artikel. In der API-Referenz sehe ich, wie ich das letzte Element erhalten kann, aber ich möchte alle haben, damit ich sie visuell überprüfen kann, um festzustellen, warum ich die Diskrepanz erhalte. In diesem Beispiel möchte ich also alle drei A036-Einträge und sowohl 11795-Einträge als auch alle anderen duplizierten Einträge anstelle des nur ersten erhalten. Jede Hilfe wird am meisten geschätzt.
quelle
ID
berücksichtigen , nicht" Zeilen, die in mehreren oder allen Spalten identisch sind ".Antworten:
Methode 1: Drucken Sie alle Zeilen, in denen die ID eine der doppelt duplizierten IDs ist:
aber ich konnte mir keinen guten Weg vorstellen, um zu verhindern, dass es
ids
so oft wiederholt wird. Ich bevorzuge Methode 2:groupby
auf der ID.quelle
g for _
dasg for (placeholder, g) in df.groupby('bla') if 'bla'
; Der Unterstrich ist ein typisches Symbol für den Platzhalter eines unvermeidlichen Arguments, bei dem wir ihn für nichts in einem Lambda-ähnlichen Ausdruck verwenden möchten.sort
wurde für DataFrames zugunsten vonsort_values
odersort_index
verwandten SO Q & AMit Pandas Version 0.17 können Sie in der duplizierten Funktion 'keep = False' setzen , um alle doppelten Elemente abzurufen.
quelle
'all'
wäre logischer und intuitiver IMO.Alle duplizierten Zeilen werden an Sie zurückgegeben.
Laut Dokumentation :
quelle
Da ich keinen Kommentar abgeben kann, wird dies als separate Antwort veröffentlicht
Um Duplikate auf der Grundlage von mehr als einer Spalte zu finden, geben Sie jeden Spaltennamen wie folgt an. Daraufhin werden alle festgelegten doppelten Zeilen zurückgegeben:
quelle
Das hat bei mir funktioniert
quelle
== True
, gibt.duplicated()
bereits bool Array zurück.Wenn Sie ein elementweises logisches oder verwenden und das Argument take_last der duplizierten Pandas-Methode auf True und False setzen, können Sie aus Ihrem Datenrahmen einen Satz abrufen, der alle Duplikate enthält.
quelle
Dies ist möglicherweise keine Lösung für die Frage, sondern dient zur Veranschaulichung von Beispielen:
Die Ausgänge:
quelle
sort("ID")
scheint jetzt nicht zu funktionieren, scheint gemäß Sortierdokument veraltet zu sein , also verwenden Siesort_values("ID")
stattdessen, um nach doppeltem Filter zu sortieren, wie folgt:quelle
Für meine Datenbank funktionierte dupliziert (keep = False) nicht, bis die Spalte sortiert wurde.
quelle
df[df.duplicated(['ID'])==True].sort_values('ID')
quelle