簡體   English   中英

Python 每個用戶過去 30 天的銷售額總和

[英]Sum of sales for last 30days per user with Python

我正在嘗試獲取名為“sales_30d_lag”的新 df 列,其中每個 user_id 自上次購買日期起過去 30 天的總銷售額。 我知道如何獲得 30 天的延遲,請參見下面的代碼,但這不能解決問題,因為它是固定日期。

用戶身份 購買日期 產品 銷售量
1 21 年 1 月 1 日 一個 1
2 21 年 1 月 1 日 一個 1
max_date = max(df['purchase_date'])
df['30d_lag']= pd.to_datetime(df['max_date']) - pd.to_timedelta(30)

我也使用了不同的方法,但這似乎也不起作用。 任何想法如何獲得這個專欄?

start_date = pd.to_datetime(df['max_date'])
end_date = start_date - pd.to_timedelta(30)
df_30d_lag = df[df['purchase_date'].between(start_date, end_date)].groupby('user_id').agg({'sales':'sum'}).rename(columns={'sales':'sales_30d_lag'}).reset_index()

您可以結合使用isinpd.date_range函數。

這是一個例子:

start_date = pd.to_datetime(df['max_date'])
end_date = start_date - pd.to_timedelta(30)

30_d_df = df[df['datetime_col'].isin(pd.date_range(start_date, end_date, freq='D'))]

# Once the filtration is complete you can use your normal groupby function 
30_d_df.groupby('user_id').agg({'sales':'sum'})

注意:要讓這個 function 工作,您需要在datetime_col中有 datetime_col(如果它已經不在其中)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM