Ich habe sessions
Datenrahmen, der E-mail
und Sessions
(int) Spalten enthält.Rolling Summe in Untergruppen eines Datenrahmens (Pandas)
Ich muss rollende Summe der Sitzungen per E-Mail (d. H. Nicht global) berechnen.
nun die folgenden Werke, aber es ist sehr langsam:
emails = set(list(sessions['E-mail']))
ses_sums = []
for em in emails:
email_sessions = sessions[sessions['E-mail'] == em]
email_sessions.is_copy = False
email_sessions['Session_Rolling_Sum'] = pd.rolling_sum(email_sessions['Sessions'], window=self.window).fillna(0)
ses_sums.append(email_sessions)
df = pd.concat(ses_sums, ignore_index=True)
Gibt es eine Möglichkeit, das gleiche in pandas
zu erreichen, aber unter Verwendung von pandas
Operatoren auf einem Datenrahmen statt der Schaffung separaten Datenrahmen für jede E-Mail und dann Verketten sie?
(entweder das, oder irgendeine andere Art und Weise dies schneller zu machen)
Wie funktioniert 0 + 2 + 4 = 11? – Blake
@Blake Ich weiß es nicht. Wie? Wenn Sie sich auf die Indexwerte beziehen, schauen Sie sich an, wo die ersten 3 Werte von "E-Mail" gleich "A" sind. Sie werden sehen, dass die Indexwerte "0", "2" und "4" sind. Diese Indexwerte werden in die zweite Ebene eines Pandas 'MultiIndex' eingebettet. '11' ist das Ergebnis von' 9 + 1 + 1'. – piRSquared
Ja, ich war verwirrt, was .rolling() tut. Ich dachte, es wäre .cumsum(), aber es ist nur eine gefensterte Aggregation. Ich sehe jetzt – Blake