[英]Pandas 5 Day Rolling Count Unique Days
我有一張銷售表,其中我需要滾動計算買家在過去 5 天內購買商品的天數。
銷售數據如下所示:
日期 | 買方 | 購買金額 |
---|---|---|
2022 年 1 月 1 日 | 一種 | 2個 |
2022 年 1 月 3 日 | 一種 | 4個 |
2022 年 1 月 20 日 | 一種 | 3個 |
2022 年 1 月 4 日 | b | 6個 |
2022 年 1 月 21 日 | b | 10 |
該表應根據日期列回顧 5 天,並計算給定買家進行購買的所有天數。 5 天 window 內的行數未定義,因此我無法計算其間的行數。
該表應如下所示:
日期 | 買方 | 購買金額 | 5 天連續購買 |
---|---|---|---|
2022 年 1 月 1 日 | 一種 | 2個 | 1個 |
2022 年 1 月 3 日 | 一種 | 4個 | 2個 |
2022 年 1 月 20 日 | 一種 | 3個 | 1個 |
2022 年 1 月 4 日 | b | 6個 | 1個 |
2022 年 1 月 21 日 | b | 10 | 1個 |
我一直在嘗試在 DATE 列上使用 nunique,但沒有成功:
我試過的:
df_five_days['5-DAY ROLLING DAYS WITH PURCHASES'] = df.groupby(['BUYER']).rolling('5D', min_periods=1, on='DATE').DATE.nunique()
目標是在任何一天吸引在過去 5 天(超過 3 天)內購買過商品的買家。
看看這是否適合你。 我是這樣做的:
df['DATE'] = pd.to_datetime(df['DATE'])
df['5-DAY ROLLING DAYS WITH PURCHASES'] = (df.groupby(['BUYER']).rolling('5D', min_periods=1, on='DATE').count()).reset_index().iloc[:, 3]
Output
DATE BUYER AMOUNT BOUGHT 5-DAY ROLLING DAYS WITH PURCHASES
0 2022-01-01 a 2 1.0
1 2022-01-03 a 4 2.0
2 2022-01-20 a 3 1.0
3 2022-01-04 b 6 1.0
4 2022-01-21 b 10 1.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.