[英]Filter pandas dataframe, row value must be higher than an offset max value of the column, per customer
我有一個包含客戶 ID、訂單 ID、收入和訂單日期的訂單 dataframe,如下所示:
客戶ID | 訂單編號 | 收入 | 訂購日期 |
---|---|---|---|
一個 | 1 | 10 | 05-08-2022 |
乙 | 2 | 10 | 04-07-2022 |
C | 3 | 10 | 05-02-2022 |
等等。 我正在嘗試復制此 dataframe 但僅保留給定客戶訂購日期介於最新訂購日期和之前三個月之間的每一行。 即條件對於每一行都是可變的。
我試過這樣的東西
df_filtered = df.loc[df['Order Date']>=(df.max(['Date Order']- DateOffset(months=3)))]
但是得到錯誤“TypeError: unsupported operand type(s) for -: 'list' and 'DateOffset'”
我還嘗試創建一個單獨的 dataframe ,其中我按客戶 ID 分組並計算了最近購買前 3 個月的日期。
像這樣:
客戶ID | Last_purchase_3M |
---|---|
一個 | 05-05-2022 |
乙 | 04-04-2022 |
C | 05-12-2021 |
打算做這樣的事情:
df_filtered = df.loc[df['Order Date']>=df_list['last_purchase_3M'] & df['Customer ID'] == df_list['Customer ID']]
但這給了我這個錯誤“TypeError:&:'int'和'str'不支持的操作數類型”。
我顯然不知道我在這里做什么(我也是新手;))
我是在正確的軌道上還是完全錯誤的?
三是這里的dtype問題
df_filtered = df.loc[df['Order Date']>=(df.max(['Date Order']- DateOffset(months=3)))]
嘗試
df['Order Date'] = pd.to_datetime(df['Order Date'])
df_filtered = df.loc[df['Order Date'].ge(df['Order Date'].max()- DateOffset(months=3))]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.