Ich habe einen Datensatz von Textfeld Interaktionen über mehrere Dutzend Benutzer meiner Anwendung über den Zeitraum von mehreren Monaten. Ich versuche, die durchschnittliche Zeit zwischen Tastenanschlägen in Pandas zu berechnen. Die Daten in etwa so aussehen:Berechnung der Zeit zwischen Textfeldinteraktionen
timestamp before_text after_text
1453481138188 NULL a
1453481138600 a ab
1453481138900 ab abc
1453481139400 abc abcd
1453484000000 Enter some numbers 1
1453484000100 1 12
1453484000600 12 123
timestamp
enthalten die Unix-Zeit, dass der Benutzer die Taste gedrückt wird, before_text
ist das, was das Textfeld vor dem Benutzer enthielt die Taste drücken, und after_text
ist, was das Feld sah aus wie nach der Tastenanschlag.
Was ist der beste Weg, dies zu tun? Ich weiß, das ist nicht so einfach wie etwas zu tun:
weil dies eine sehr große Zeitdifferenz an der Grenze zwischen zwei Wechselwirkungen berechnen wird. Es scheint, als wäre der beste Weg dies zu tun, eine Funktion jeder Zeile an df.groupby
zu übergeben, so dass ich das obige Snippet auf jede Zeile anwenden kann. Wenn ich diese magic_function
hatte, konnte ich so etwas wie:
df.groupby(magic_function).apply(lambda x: x["timestamp"] - x["timestamp"].shift()).mean()
Was ein guter Weg ist magic_function
zu implementieren, oder bin ich über das alles falsch gedacht?
+1 Als beste Antwort ausgewählt, weil es sich um eine für Schleife vermeidet die Verwendung und Nutzung von vektorisiert Operationen macht Pandas. – PastyWhiteMike
FYI, @PastyWhiteMike: '.apply()' ist eine 'for' Schleife, nicht vektorisiert. – Kartik
Ich denke, Sie können hier vektorisierten Ansatz verwenden: 'df.groupby (magic_function) .timestamp.diff(). Mean()' – MaxU