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

Excel中计算过去4周唯一客户数量的方法求助

解决方案(基于Pandas)

核心思路

先按周聚合出每周的唯一客户,再通过滑动窗口统计**以当前周为终点的过去4周(含当前周)**内的累计唯一客户数,最后将结果关联回原始数据的每一行。

代码实现

import pandas as pd

# 假设你的数据集已加载到df变量中
# df = pd.read_csv("your_data_file.csv")

# 1. 转换日期列为标准datetime格式,保证排序准确性
df['Date'] = pd.to_datetime(df['Date'])

# 2. 按周分组,提取每周的唯一客户集合
weekly_unique_customers = df.groupby('Year&Week')['客户'].unique().reset_index()

# 3. 生成周起始日期,解决跨年周的连续性排序问题
weekly_unique_customers['week_start'] = pd.to_datetime(weekly_unique_customers['Year&Week'].astype(str), format='%Y%W')
weekly_unique_customers = weekly_unique_customers.sort_values('week_start').reset_index(drop=True)

# 4. 滑动窗口计算过去4周的唯一客户总数
def calc_window_unique(window):
    # 合并窗口内所有客户列表,去重后统计数量
    all_cust = [cust for sublist in window for cust in sublist]
    return len(set(all_cust))

# 窗口大小设为4,允许最小窗口为1(处理数据集开头不足4周的情况)
weekly_unique_customers['past_4weeks_unique'] = weekly_unique_customers['客户'].rolling(window=4, min_periods=1).apply(calc_window_unique, raw=False)

# 5. 将计算结果关联回原始数据集
df = df.merge(weekly_unique_customers[['Year&Week', 'past_4weeks_unique']], on='Year&Week', how='left')

结果说明

新增的past_4weeks_unique列即为每行数据对应的目标值:过去4周内至少有一次记录的唯一客户数量。比如原始数据中202238周的行,过去4周涉及客户4、2、6,对应列值为3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:08:13