2017-03-29 12 views
0

Ich habe folgende Daten.Pandas - Gruppe nach ID und drop Duplikate

userid itemid timestamp 
    1  1  50 
    1  2  50 
    1  3  50 
    1  4  60 
    2  1  40 
    2  2  50 

Ich möchte Benutzer mit doppelten Zeitstempeln löschen. In meinem obigen Beispiel möchte ich userid = 1 löschen, weil er mehrere Elemente bei timestamp = 50 angesehen hat. userid = 2 sollte nicht gelöscht werden, da er Elemente in verschiedenen Zeitstempeln angezeigt hat.

Kann mir jemand helfen?

Antwort

1

Option 1
Verwenden duplicated

dropid = df.loc[ 
    df.duplicated(subset=['userid', 'timestamp']), 
    'userid' 
].unique() 
df[~df.userid.isin(dropid)] 

Option 2
Verwenden groupby und filter

df.set_index(['userid', 'timestamp']).groupby(level=0).filter(
    lambda x: ~x.index.is_unique 
).reset_index()