在几周内迭代一个 groupby 日期时间

Iterating a groupby datetime over several weeks

我正在尝试按我使用 to_datetime 和 timedelta 预定义的一周对我的数据进行分组。然而,在复制我的脚本几次之后,我希望有一种方法可以在数周内重复这个过程。这是可以做到的吗?

我正在处理的数据集列出了每个数据源及其相应 ID 的每日销售收入和支出。

以下是我目前所掌握的,但由于是自学,我对循环的了解非常有限。

让我知道我的要求是否可行,或者我是否必须继续每周复制我的代码。

代码

import pandas as pd
from datetime import datetime, timedelta,date


startdate = '2021-09-26'
enddate =  pd.to_datetime(startdate) + timedelta(days=6)


last7 = (df.date >= startdate) & (df.date <= enddate)
df = df.loc[last7,['datasource','id','revenue','spend']]

df.groupby(by=['datasource_name','id'],as_index=False).sum()
df['start_date'] = startdate
df['end_date'] = enddate
df

如果我没有正确理解您的问题,那么您基本上是在尝试将每日数据汇总为每周数据。您可以尝试以下代码

import datetime as dt
import pandas as pd

#Get weekend date for each date

df['week_end_date']=df['date'].apply(lambda x: pd.Period(x,freq='W').end_time.date().strftime('%Y-%m-%d'))
#Aggregate sales and revenue at weekly level

df_agg = df.groupby(['datasource_name','id','week_end_date']).agg({'revenue':'sum','spend':'sum'}).reset_index()

df_agg 将按相应日期的周末日期汇总所有销售和收入数字。