You need to enable JavaScript to run this app. 如何根据日期列将DataFrame按周聚合并计算周总值
优惠活动
大模型
产品
解决方案
定价
更多

如何根据日期列将DataFrame按周聚合并计算周总值

宽表按周聚合日期列的实现方案

核心逻辑是将列维度的日期作为分组依据,同属一个固定7天周期的列按行维度计算求和值,全程不需要对宽表做长表转换,对长跨度日期列的处理效率远高于手动循环拼接。

  • 预处理数据结构
    先将品类标签列Name转为行索引,同时把所有字符串格式的日期列名统一解析为pandas可识别的datetime类型,避免分组时的匹配错误:

    import pandas as pd
    
    # Name列转为行索引
    df = df.set_index("Name")
    # 列名批量转换为datetime格式
    df.columns = pd.to_datetime(df.columns)
    
  • 按列轴做周维度聚合
    借助resample方法直接在列轴上按7天周期分组,对同组的列按行求和,同时配置参数让分组后的列名取每周周期的起始日期,和示例的列名格式完全匹配:

    weekly_agg_df = df.resample(
        rule="7D",          # 以连续7天为一个聚合周期
        axis=1,             # 将聚合逻辑应用到列轴,而非默认的行轴
        closed="left",      # 每个周期采用左闭右开区间,避免相邻周期重复计数
        label="left"        # 用每个周期的起始日期作为分组后的列名
    ).sum()
    
  • 格式还原匹配原始表结构
    将之前设为索引的Name列还原为普通数据列,再把datetime格式的列名转回YYYY-MM-DD的字符串格式,即可得到最终的周统计结果:

    weekly_agg_df = weekly_agg_df.reset_index()
    # 列名格式统一为字符串日期
    weekly_agg_df.columns = weekly_agg_df.columns.strftime("%Y-%m-%d")
    

适配调整说明

  • 若业务需要对齐自然周(比如固定从每周一开始计数,而非从数据最早日期开始每7天切分周期),可将rule="7D"替换为rule="W-MON",即可自动匹配每周一作为周起始点分组
  • 和你之前尝试的aggregate方法相比,该方案的适配性更强:aggregate默认基于行标签完成分组,而本场景的分组维度是列自身的日期属性,通过resample指定轴方向可直接匹配需求,无需额外做宽表转长表的冗余操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 17:06:04