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

如何在pandas.date_range生成的时段列表中排除指定时间区间?

实现时间序列排除指定区间的简便方案

pandas 没有内置直接叫 .exclude() 的方法,但可以通过自带的时间筛选方法一行完成过滤,无需手动拆分多段时间再合并,代码可维护性更高,适配多排除区间的场景也更灵活。

实现代码

你可以直接改造原有的create_range_string方法,增加排除时段参数:

import pandas as pd

def create_range_string(self, start, end, freq='30T', exclude_start=None, exclude_end=None):
    # 先生成全量时间序列
    full_range = pd.date_range(start=start, end=end, freq=freq)
    # 配置了排除区间则执行过滤
    if exclude_start and exclude_end:
        # ~ 代表逻辑取反,即排除落在[exclude_start, exclude_end)区间内的时间
        full_range = full_range[~full_range.indexer_between_time(
            exclude_start, 
            exclude_end,
            include_start=True,  # 包含排除区间的开始时间,比如12:00整会被排除
            include_end=False    # 不包含排除区间的结束时间,比如13:00整会保留
        )]
    return full_range.strftime('%H:%M')

调用示例

直接传入要排除的时段即可得到结果:

# 生成09:00到15:00、间隔30分钟、排除12:00-13:00的时间数组
result = self.create_range_string('09:00', '15:00', exclude_start='12:00', exclude_end='13:00')

方案优势

  • 逻辑更简洁,无需手动拆分多段时间再合并
  • 适配多排除区间的场景更方便:如果需要新增其他排除时段,只要叠加过滤条件即可,不用多次拆分合并
  • 可通过include_start、include_end参数灵活调整区间的开闭规则,适配不同业务需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:54:02