Ich habe ein Datenrahmen, die auf Produktspeicher day_id Ebene gruppiert Sagen Sie es wie unten aussieht und ich brauche eine Spalte mit Roll SummeSumme der nächsten n Zeilen in Python
prod store day_id visits
111 123 1 2
111 123 2 3
111 123 3 1
111 123 4 0
111 123 5 1
111 123 6 0
111 123 7 1
111 123 8 1
111 123 9 2
Notwendigkeit der Schaffung eines Datenrahmen erstellen wie unten
prod store day_id visits rolling_4_sum cond
111 123 1 2 6 1
111 123 2 3 5 1
111 123 3 1 2 1
111 123 4 0 2 1
111 123 5 1 4 0
111 123 6 0 4 0
111 123 7 1 NA 0
111 123 8 1 NA 0
111 123 9 2 NA 0
i für erstellen cond Spalte Suche: die rekursiv eine Bedingung überprüft, sagen, wenn rolling_4_sum größer als 5 dann die nächsten 4 Reihen machen als 1 sonst nichts tun, das heißt Auch wenn die Bedingung nicht erfüllt ist, behalten Sie, was bereits vorher ausgefüllt wurde, diese Prüfung für jede Zeile bis zur 7. Zeile.
Wie kann ich dies mit Python erreichen? Ich versuche
d1['rolling_4_sum'] = d1.groupby(['prod', 'store']).visits.rolling(4).sum()
aber immer einen Fehler.
Wenn du eine rollende Summe willst, solltest du die 'sum' Methode anstelle der' mean' Methode verwenden. – lmo
ja, korrigiert, aber immer noch die folgenden TypeError: inkompatibler Index der eingefügten Spalte mit Frame-Index – Mukul
Ihr Fehler ist wegen groupby. Es macht keinen Sinn, die Daten nach einigen Spalten zu gruppieren und sie dann wieder in denselben Datenrahmen zu stellen. Wenn es gruppiert ist, ist das ein neuer Datenrahmen mit einem eigenen Index, also arbeite mit diesem. – FTP