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

Pandas中结合Unavailable Power合并重叠日期区间的问题

解决方案:按Unit+Unavailable Power分组合并重叠日期区间

核心思路

要解决你的问题,关键是先按Unit和Unavailable power双重分组,确保只在这两个字段完全相同的组内处理日期区间合并,同时保留Nominal power等字段。具体步骤如下:

步骤1:确保日期列是datetime类型

首先要把Start和End列转换为datetime格式,否则无法正确比较日期:

import pandas as pd

# 转换日期列类型
df['Start'] = pd.to_datetime(df['Start'])
df['End'] = pd.to_datetime(df['End'])

步骤2:分组并合并重叠区间

通过分组+自定义函数实现区间合并,同时保留所有需要的字段:

def merge_intervals(group):
    # 按Start日期排序,保证区间顺序正确
    sorted_group = group.sort_values('Start')
    
    # 生成合并标记:当前区间的Start <= 上一个区间的End时,属于同一合并组
    sorted_group['merge_tag'] = (sorted_group['Start'] > sorted_group['End'].shift()).cumsum()
    
    # 聚合得到合并后的结果:取每组最早的Start、最晚的End,保留其他字段
    merged = sorted_group.groupby('merge_tag').agg(
        Start=('Start', 'min'),
        End=('End', 'max'),
        Unit=('Unit', 'first'),
        Nominal_power=('Nominal power', 'first'),
        Unavailable_power=('Unavailable power', 'first')
    ).drop('merge_tag', axis=1)
    
    return merged

# 按Unit、Unavailable power分组(如果同一Unit下Nominal power固定,可加入分组键确保一致性)
result = df.groupby(['Unit', 'Unavailable power', 'Nominal power'], as_index=False).apply(merge_intervals)
result = result.reset_index(drop=True)

关键细节说明

  • 分组逻辑:必须同时按Unit和Unavailable power分组,彻底避免不同功率值的区间被错误合并。如果你的业务中同一Unit的Nominal power是固定值,加入Nominal power到分组键可以确保结果中该字段的一致性。
  • 合并标记:merge_tag通过判断当前区间的开始是否晚于上一个区间的结束,来区分独立区间和需要合并的区间,cumsum会给连续/重叠的区间分配相同的标记。
  • 连续区间处理:如果需要合并相邻但不重叠的区间(比如前一个End是2023-01-05,后一个Start是2023-01-06),可以把判断条件改为:
    sorted_group['merge_tag'] = (sorted_group['Start'] > sorted_group['End'].shift() + pd.Timedelta(days=1)).cumsum()
    

示例验证

假设你的原始数据是:

UnitStartEndNominal powerUnavailable power
A2023-01-012023-01-0510020
A2023-01-032023-01-0710020
A2023-01-102023-01-1510030
A2023-01-122023-01-2010030

运行代码后会得到:

StartEndUnitNominal_powerUnavailable_power
2023-01-012023-01-07A10020
2023-01-102023-01-20A10030

完全符合你的需求:同一Unit+Unavailable power的重叠区间被合并,且所有字段都保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:27:27