I want to count unique customers over 3 days window grouped by city
input:
df = pd.DataFrame([['1A', 'Cairo', '2020-12-01'],
["2A", 'Cairo', '2020-12-01'],
['1A', 'Cairo', '2020-12-02'],
['1A', 'Cairo', '2020-12-03'],
['3A', 'Alex', '2020-12-01'],
['3A', 'Alex', '2020-12-02'],
['3A', 'Alex', '2020-12-03'],
['4A', 'Giza', '2020-12-02'],
['4A', 'Giza', '2020-12-02'],
['5A', 'Giza', '2020-12-03'],
['6A', 'Giza', '2020-12-01']], columns=
['customer_id', 'city', 'day'])
expected output :
output = pd.DataFrame([['Alex', '2020-12-01',1],
['Alex', '2020-12-02',1],
['Alex', '2020-12-03',1],
['Cairo', '2020-12-01',2],
['Cairo', '2020-12-02',2],
['Cairo', '2020-12-03',2],
['Giza', '2020-12-01',1],
['Giza', '2020-12-02',2],
['Giza', '2020-12-03',3]], columns=
['city', 'day', 'unique_customers_last3Days'])
I tried:
df['day'] = pd.to_datetime(df['day'])
df.set_index('day',inplace=True)
df.sort_index(inplace=True)
df.groupby('city').rolling("3D").agg({'customer_id':'nun'})
but it gives me error
AttributeError: 'nunique' is not a valid function for 'RollingGroupby' object