Groupby, Zählen mit Bedingung

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
st_baum
User
Beiträge: 26
Registriert: Sonntag 24. Mai 2020, 13:54

Ich habe einen Datensatz, der sieht wie folgt aus:

Code: Alles auswählen

import pandas as pd
d = {'id': ['A','A','A','A','B','B'],
    'date' : ['20210201', '20210202', '20210210','20210220', '20210303', '20210310']}
df = pd.DataFrame(d)
df.date = pd.to_datetime(df.date, format = '%Y%m%d')
#df['prev_date'] = df.groupby('id')['date'].shift() 
df['date_2weeks'] = df.date - pd.to_timedelta(14, unit = 'd')
Für jede Spalte möchte ich jetzt per id zählen, wie viele vorherige Zeilen es gibt, deren date zwischen date und date_2weeks liegt. Das Ergbnis soll wie folgt aussehen:

Code: Alles auswählen

df['count'] = [0,1,2,1,0,1]
Ich habe mich mit groupby, apply & lamba versucht, geklappt hat es aber nicht. Vor dem Hintergrund der Größe des DFs (>1m Zeilen), erscheint mir pd.date_range in Kombination mit pd.explode() nicht sinnvoll.
Antworten