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

如何对Pandas DataFrame按name和周分组并计算周度滚动浏览量?

解决方法

首先处理日期格式,再按name分组计算不同周期的滚动累计浏览量,具体实现如下:

import pandas as pd

# 原始数据
dfx = pd.DataFrame({
    "name": ["bag","bag","bag","phone","phone","phone"],
    "date": ["2022-11-14 00:00:00","2022-11-21 00:00:00","2022-11-28 00:00:00",
             "2022-11-14 00:00:00","2022-11-21 00:00:00","2022-11-28 00:00:00"],
    "view": [80,90,100,200,400,450]
})

# 将日期转换为datetime类型,确保时间序列处理正常
dfx['date'] = pd.to_datetime(dfx['date'])

# 按name分组,计算1/2/3周的滚动累计浏览量,取每个分组最后一行的结果
result = dfx.groupby('name')['view'].agg(
    one_week_view=lambda x: x.rolling(1).sum().iloc[-1],
    two_weeks_view=lambda x: x.rolling(2).sum().iloc[-1],
    three_weeks_view=lambda x: x.rolling(3).sum().iloc[-1]
).reset_index()

print(result)

输出结果:

name  one_week_view  two_weeks_view  three_weeks_view
0    bag             80             170               270
1  phone            200             600              1050

补充说明:

  • 由于原始数据中每个name对应的日期是连续周度数据,直接用rolling(n)即可计算前n周的累计和,取分组最后一行就是截止到最后一周的n周累计值。
  • 若日期并非严格周度连续,可先通过dfx['week'] = dfx['date'].dt.isocalendar().week提取周数,按name和week分组求和后,再执行滚动累计操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:02:02