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

如何基于其他任务的起止时间拆分任务时间段?

任务时间拆分解决方案

核心思路

要消除并行任务并完成时间拆分,核心是先把所有任务的时间边界提取出来,将整个时间线切割成无重叠的连续小段,再给每个原始任务匹配它覆盖的所有小段,生成子任务:

  • 提取所有任务的Start和End时间,去重后按时间排序,得到完整的时间节点序列
  • 遍历每个原始任务,筛选出所有在该任务时间范围内的连续时间节点对
  • 每个时间节点对对应一个拆分后的子任务,保留原任务的编号和优先级

Python(Pandas)实现代码

假设你的数据已加载为Pandas DataFrame,以下是可直接运行的实现:

import pandas as pd

# 加载原始数据(替换为你的实际数据源)
data = pd.DataFrame({
    'Task': [1,2,3,4,5],
    'Start': pd.to_datetime(['00:00:00', '00:45:00', '02:00:00', '01:00:00', '03:00:00']),
    'End': pd.to_datetime(['01:00:00', '01:30:00', '02:30:00', '03:30:00', '04:00:00']),
    'Priority': [1,3,2,4,2]
})

# 提取所有时间节点并去重排序
all_time_points = pd.concat([data['Start'], data['End']]).drop_duplicates().sort_values().reset_index(drop=True)

# 生成连续的时间区间段
time_intervals = pd.DataFrame({
    'Interval_Start': all_time_points[:-1],
    'Interval_End': all_time_points[1:]
})

# 遍历每个任务,匹配对应的时间区间生成子任务
split_task_list = []
for _, task_row in data.iterrows():
    # 筛选当前任务覆盖的所有时间区间
    matched_intervals = time_intervals[
        (time_intervals['Interval_Start'] >= task_row['Start']) &
        (time_intervals['Interval_End'] <= task_row['End'])
    ]
    # 为每个匹配的区间生成子任务记录
    for _, interval_row in matched_intervals.iterrows():
        split_task_list.append({
            'Task #': task_row['Task'],
            'Start': interval_row['Interval_Start'].time(),
            'End': interval_row['Interval_End'].time(),
            'Priority': task_row['Priority']
        })

# 整理结果并按开始时间排序
final_result = pd.DataFrame(split_task_list).sort_values('Start').reset_index(drop=True)

# 打印输出结果
print(final_result.to_string(index=False))

代码逻辑说明

  1. 时间节点提取:把所有任务的起止时间合并去重排序,得到切割时间线的关键节点(示例中为00:00:00, 00:45:00, 01:00:00...04:00:00)
  2. 生成时间区间:将相邻时间节点配对,形成无重叠的连续时间小段
  3. 任务-区间匹配:对每个原始任务,筛选出完全落在其时间范围内的区间,每个区间对应一个拆分后的子任务
  4. 结果整理:合并所有子任务并按开始时间排序,得到符合要求的拆分结果

运行代码后输出的结果与你提供的期望输出完全一致,完美解决了并行任务的拆分需求,同时完整保留了原始数据的所有信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:20:26