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

Pandas如何按日期空窗条件对同演出同剧院百老汇数据分组

基于空窗间隔的独立演出分段聚合实现方法

核心逻辑

传统按演出名+剧院分组的方式,会把同场地多年复排的同名演出错误合并。解决思路是在「演出名+剧院」的分组基础上,进一步识别组内的时间断档,把超过一周无记录的区间拆成独立的演出段,完全适配业务规则:连续周度记录不管跨不跨年都归为同一演出、断档超一周就拆分。

具体实现步骤

  • 预处理数据格式:将周结束日期字段从字符串转换为pandas可计算的日期类型,全表按「演出名、剧院、周结束日期」排序,保证同演出同剧院的记录按时间先后排列
  • 生成独立演出段标识:按「演出名、剧院」分组,组内计算相邻记录的日期间隔,标记出所有超过7天的空窗位置,将空窗位置做累加计数,得到每个连续演出段的唯一编号
  • 执行聚合:基于「演出名、剧院、段编号」三个维度做分组,计算gross的均值

可直接运行的示例代码

import pandas as pd

# 加载示例数据集
df = pd.DataFrame({
    "Show": ["Mamma Mia", "Mamma Mia", "Mamma Mia", "Shrek The Musical", "Mamma Mia",
             "Mamma Mia", "Mamma Mia", "Mamma Mia", "Mamma Mia"],
    "Week_ending": ["05/01/2020", "12/01/2020", "19/01/2020", "19/01/2020", "11/08/2019",
                    "18/08/2019", "27/12/2009", "03/10/2010", "10/01/2010"],
    "Theatre": ["T1", "T1", "T1", "T2", "T3", "T3", "T1", "T1", "T1"],
    "gross": [100, 200, 150, 100, 100, 100, 100, 100, 100]
})

# 转换日期格式,适配数据集的日/月/年格式避免解析错误
df['Week_ending'] = pd.to_datetime(df['Week_ending'], format='%d/%m/%Y')
# 排序保证组内时间顺序正确
df = df.sort_values(['Show', 'Theatre', 'Week_ending']).reset_index(drop=True)

# 为每个连续演出段生成唯一编号
def get_segment_id(group):
    # 计算相邻记录的日期间隔
    date_gap = group['Week_ending'].diff()
    # 间隔超过7天即判定为出现断档,需要拆分
    has_new_segment = date_gap > pd.Timedelta(weeks=1)
    # 累加断档标记得到段编号
    return has_new_segment.cumsum()

df['segment_id'] = df.groupby(['Show', 'Theatre'], group_keys=False).apply(get_segment_id)

# 分组聚合计算单段演出的平均gross
agg_result = df.groupby(['Show', 'Theatre', 'segment_id'])['gross'].mean().reset_index(name='mean_gross')

# (可选)给演出名标注首发年份,匹配期望的展示效果
agg_result['show_label'] = agg_result.apply(
    lambda row: f"{row['Show']} ({df[(df['Show']==row['Show']) & (df['Theatre']==row['Theatre']) & (df['segment_id']==row['segment_id'])]['Week_ending'].dt.year.iloc[0]})",
    axis=1
)

适配性说明

  • 不会拆分连续跨年演出:如果演出从11月持续到次年3月,全程相邻周记录间隔均为7天,会被完整归为同一分组,不会像按年份拆分的方式一样把连续演出切为两段
  • 自动识别断档拆分:同一演出同一剧院下只要出现超过一周的无数据空窗,就会自动拆分为独立分组,可正确将T1剧院下相隔十年的不同版本《妈妈咪呀》拆为独立组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 14:36:05