Ich habe eine (sehr vereinfachter hier) Pandas Datenrahmen, die wie folgt aussieht:Pandas Datenrahmen: Duplikate basierend auf Spalte und Zeitbereich
df
datetime user type msg
0 2012-11-11 15:41:08 u1 txt hello world
1 2012-11-11 15:41:11 u2 txt hello world
2 2012-11-21 17:00:08 u3 txt hello world
3 2012-11-22 18:08:35 u4 txt hello you
4 2012-11-22 18:08:37 u5 txt hello you
Was Ich mag würde jetzt zu tun ist, zu erhalten Alle doppelte Nachrichten, deren Zeitstempel innerhalb von 3 Sekunden ist. Die gewünschte Ausgabe wäre:
datetime user type msg
0 2012-11-11 15:41:08 u1 txt hello world
1 2012-11-11 15:41:11 u2 txt hello world
3 2012-11-22 18:08:35 u4 txt hello you
4 2012-11-22 18:08:37 u5 txt hello you
ohne die dritte Reihe, wie der Text die gleichen wie in Zeile eins und zwei ist, aber die Zeitmarke nicht im Bereich von 3 Sekunden.
Ich habe versucht, die Spalten Datetime und msg als Parameter für die duplicate()
Methode zu definieren, aber es gibt einen leeren Datenrahmen, da die Zeitstempel nicht identisch sind:
mask = df.duplicated(subset=['datetime', 'msg'], keep=False)
print(df[mask])
Empty DataFrame
Columns: [datetime, user, type, msg, MD5]
Index: []
Gibt es eine Möglichkeit, wo ich einen Bereich definieren für meinen "datetime" -Parameter? Zur Veranschaulichung etwas wie:
mask = df.duplicated(subset=['datetime_between_3_seconds', 'msg'], keep=False)
Alle hier helfen würde, wie immer sehr geschätzt werden.
Vielen Dank für Ihre Hilfe, Tkanno! Ihr Vorschlag war auch hilfreich! – dliv