You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas Grouper实现以数据集最晚日期为周尾的按周聚合

解决方法

适用pandas >=1.1.0版本(最简便方案)

核心逻辑:用固定7天为周期替代默认绑定固定周结束日的周频率,将分组锚点设置为数据集最晚日期,即可实现从最晚日期往前倒推每7天为一个周期的聚合效果。

# 第一步先获取数据集的最晚日期
latest_date = fp['date'].max()
# 自定义周期聚合
res = fp.groupby(
    pd.Grouper(
        key='date',
        freq='7D',
        origin=latest_date,
        closed='right',
        label='right'
    )
).collectionName.nunique().tail(10)

参数说明:

  • freq='7D':固定7天为一个统计周期,不受默认周结束日规则限制
  • origin=latest_date:将周期分组的锚点设置为数据集最晚日期,所有分组会从该日期往前每7天切割
  • closed='right':每个周期包含右边界的日期,符合常规周聚合的统计逻辑
  • label='right':分组结果的索引用每个周期的右边界(即7天周期的结束日)显示,和原有输出格式保持一致

低版本pandas兼容方案

如果你的pandas版本不支持origin参数,可以手动计算分组标签实现需求:

latest_date = fp['date'].max()
# 计算每个日期和最晚日期的天数差,除以7得到分组编号
fp['week_group'] = ((latest_date - fp['date']).dt.days // 7)
# 按分组编号聚合后转换为周期结束日期标签
res = fp.groupby('week_group').collectionName.nunique().reset_index()
res['date'] = latest_date - pd.to_timedelta(res['week_group'] * 7, unit='D')
res = res.set_index('date')['collectionName'].sort_index().tail(10)

运行后输出的最后一个分组索引即为2021-12-02,前面的分组依次为2021-11-25、2021-11-18等,完全符合倒推7天为一个周期的需求。

内容的提问来源于stack exchange,提问作者joe8ones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:57:05