簡體   English   中英

計算在 Pandas 的天數的滾動 window 內發生的 groupby 行數

[英]Calculate a count of groupby rows that occur within a rolling window of days in Pandas

我有以下 dataframe:

import pandas as pd
#Create DF
d = {'Name': ['Jim','Jim','Jim', 'Jim','Jack','Jack'], 
     'Date': ['08/01/2021','27/01/2021','05/02/2021','10/02/2021','26/01/2021','20/02/2021']}

              
df = pd.DataFrame(data=d)
df['Date'] = pd.to_datetime(df.Date,format='%d/%m/%Y')
df

在此處輸入圖像描述

我想添加一列(到同一個數據框),計算過去 28 天內按Name分組的發生了多少。 有誰知道在超過 200,000 行代碼中執行此操作的最有效方法? 大約有 1000 個不同的Name

新列值應為1,2,3,3,1,2 任何幫助將非常感激! 謝謝!

將 dataframe 的索引設置為Date ,然后按Name對幀進行分組,並使用具有28 days偏移量的封閉 window 應用rolling count

df['count'] = df.set_index('Date')\
                .groupby('Name', sort=False)['Name']\
                .rolling('28d', closed='both').count().tolist()

   Name       Date  count
0   Jim 2021-01-08    1.0
1   Jim 2021-01-27    2.0
2   Jim 2021-02-05    3.0
3   Jim 2021-02-10    3.0
4  Jack 2021-01-26    1.0
5  Jack 2021-02-20    2.0

暫無
暫無

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

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