python - 在几周内迭代 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
解决方案
如果我正确理解了您的问题,那么您基本上是在尝试将每日数据汇总为每周。您可以尝试以下代码
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
将按相应日期的周末日期汇总您的所有销售和收入数字。
推荐阅读
- reactjs - 最好的做法是逃避创建 React 应用程序并创建我们自己的模板以使 React 项目准备好投入生产?
- node.js - 如何在节点js上实时发送数组?
- node.js - gitlab runner 没有加载正确的节点版本
- javascript - 如何正确捕获 eval() 抛出的错误?
- python - 在 Django 中使用 pythonOCC 的渲染函数
- r - 在 R 中加载包
- debugging - 为什么我的脚本推送的 URL 不正确?[/u/2 插入脚本 URL]
- python - 嵌套字典的多个列表
- react-native - 如何使 TouchableOpacity onlongPress 自定义持续时间
- r - 对两个数据框列表执行多个两个样本 t 检验