Python实现逐分钟递增起始时间的90分钟时间块组合生成
修改方案
核心逻辑说明
我们需要先生成所有合法的起始时间:从初始起始时间11/07/2021 04:52开始逐分钟递增,最大起始时间为end - 90分钟,保证每个起始时间加90分钟后的结束时间不超过阈值end。
完整可运行代码
import pandas as pd from datetime import datetime, timedelta # 基础参数配置 start = datetime(2021,7,11,4,52,0) end = start + timedelta(minutes=1198) interval = timedelta(minutes=90) max_allowed_start = end - interval # 生成所有逐分钟递增的合法时间块 blocks = [] current_st = start while current_st <= max_allowed_start: current_et = current_st + interval alpha = (current_st - start).total_seconds() / 60 blocks.append({ "ST": current_st.strftime('%d/%m/%Y %H:%M'), "ET": current_et.strftime('%d/%m/%Y %H:%M'), "alpha": alpha, "MID": 1 }) current_st += timedelta(minutes=1) # 转为DataFrame task = pd.DataFrame(blocks) # 输出验证 print(task.head(10)) # 查看前10行逐分钟递增效果 print("="*50) print(task.tail(1)) # 查看最后一行,验证结束时间不超过阈值
输出效果说明
前10行输出如下,实现了起始时间逐分钟递增、对应结束时间同步逐分钟后移的要求:
ST ET alpha MID 0 11/07/2021 04:52 11/07/2021 06:22 0.0 1 1 11/07/2021 04:53 11/07/2021 06:23 1.0 1 2 11/07/2021 04:54 11/07/2021 06:24 2.0 1 3 11/07/2021 04:55 11/07/2021 06:25 3.0 1 4 11/07/2021 04:56 11/07/2021 06:26 4.0 1 5 11/07/2021 04:57 11/07/2021 06:27 5.0 1 6 11/07/2021 04:58 11/07/2021 06:28 6.0 1 7 11/07/2021 04:59 11/07/2021 06:29 7.0 1 8 11/07/2021 05:00 11/07/2021 06:30 8.0 1 9 11/07/2021 05:01 11/07/2021 06:31 9.0 1
最后一行的结束时间会刚好等于配置的end阈值,不会超出范围。
内容的提问来源于stack exchange,提问作者vp_050
相关产品推荐
相关产品推荐

