Wie kann ich die Zeit für das erste Zielereignis pro Benutzer berechnen, das Pandas effizient (mit Edge -Fällen) verwendet. Jede Zeile enthält einen user_id, event_type und timestamp. Ich möchte die Zeit (in Sekunden) aus dem ersten Ereignis jedes Benutzers zu seinem ersten Auftreten eines Zielereignisses (z. B. "Kauf") berechnen. datetime.import pandas as pd
data = [
{'user_id': 'u1', 'event_type': 'login', 'timestamp': '2023-01-01 10:00:00'},
{'user_id': 'u1', 'event_type': 'purchase', 'timestamp': '2023-01-01 10:05:00'},
{'user_id': 'u2', 'event_type': 'login', 'timestamp': '2023-01-01 09:00:00'},
{'user_id': 'u2', 'event_type': 'scroll', 'timestamp': '2023-01-01 09:03:00'},
{'user_id': 'u3', 'event_type': 'login', 'timestamp': '2023-01-01 11:00:00'},
{'user_id': 'u3', 'event_type': 'purchase', 'timestamp': '2023-01-01 11:20:00'},
]
df = pd.DataFrame(data)
df['timestamp'] = pd.to_datetime(df['timestamp'])
< /code>
Was ist die sauberste und effizienteste Möglichkeit, die Zeit für das erste "Kauf" Ereignis pro Benutzer zu berechnen? /> Dann habe ich versucht, beide Ergebnisse zu verschmelzen, um den Zeitunterschied wie folgt zu berechnen: < /p>
first_event = df.groupby('user_id')['timestamp'].min()
first_purchase = df[df['event_type'] == 'purchase'].groupby('user_id')['timestamp'].min()
result = (first_purchase - first_event).dt.total_seconds()
< /code>
Was ich erwartet hatte:
Ich habe erwartet, dass dies mir eine saubere Serie oder einen Datenfreame mit user_id und die Anzahl der Sekunden zwischen dem ersten Ereignis des Benutzers und ihrem ersten "Kauf" geben würde. Nan).
Ich bin mir nicht sicher, ob dies der effizienteste oder sauberste Ansatz ist.>
Berechnen Sie effizient die Zeit bis zum ersten "Kauf" -Ereignis pro Benutzer in Pandas DataFrame ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post