[英]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.