如何在Dataframe中按5分钟间隔生成指定起止时间的时间序列
5分钟间隔时间序列生成方案
核心实现逻辑
- 先把输入的字符串格式的时间转换为可做算术运算的时间类型
- 初始化当前时间为起始时间
time1 - 循环判断:只要当前时间小于等于结束时间
time2,就输出当前时间,再给当前时间累加5分钟 - 输出时将时间对象转换为标准时间格式字符串即可
Python实现(新手友好,无第三方依赖)
直接调用Python内置的datetime模块即可实现:
from datetime import datetime, timedelta # 可自定义修改的参数 time1 = "09:30:59" time2 = "15:15:59" step = timedelta(minutes=5) # 时间间隔,要改其他间隔直接修改参数即可 # 时间格式声明,带日期的场景改为 "%Y-%m-%d %H:%M:%S" 即可 time_format = "%H:%M:%S" # 字符串转时间对象 start = datetime.strptime(time1, time_format) end = datetime.strptime(time2, time_format) current = start while current <= end: print(current.strftime(time_format)) current += step
运行后输出结果完全匹配需求:从09:30:59开始,每次累加5分钟,最后输出15:15:59结束。
Shell 实现(适合Linux/Mac脚本场景)
调用系统自带的date命令即可实现:
#!/bin/bash time1="09:30:59" time2="15:15:59" step=300 # 5分钟对应300秒 # 转时间戳做运算 current_ts=$(date -d "$time1" +%s) end_ts=$(date -d "$time2" +%s) while [ $current_ts -le $end_ts ]; do date -d @$current_ts +"%H:%M:%S" current_ts=$((current_ts + step)) done
注意事项
如果需要处理跨天的时间序列,只需要在输入的时间里加上日期部分,同时修改对应的时间解析格式即可,整体逻辑完全不需要调整。
内容的提问来源于stack exchange,提问作者Krishna Gupta
相关产品推荐
相关产品推荐

