首页 > 解决方案 > 在几周内迭代 groupby 日期时间

问题描述

我正在尝试按我使用 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

标签: pythonpandaspandas-groupbypython-datetime

解决方案


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

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将按相应日期的周末日期汇总您的所有销售和收入数字。


推荐阅读