如何解决在 Python 中生成 10 分钟间隔的开始和结束时间
我有一个任务,我需要在给定的时间范围之间生成 10 分钟的间隔。例如,
start_time = '2020-09-02 17:33:04.472',end_time = '2020-09-02 20:19:14.859'
期望输出:
start_times_list = ['2020-09-02 17:30:00','2020-09-02 17:40:00','2020-09-02 17:50:00','2020-09-02 18:00:00','2020-09-02 18:10:00','2020-09-02 18:20:00','2020-09-02 18:30:00','2020-09-02 18:40:00','2020-09-02 18:50:00','2020-09-02 19:00:00','2020-09-02 19:10:00','2020-09-02 19:20:00','2020-09-02 19:30:00','2020-09-02 19:40:00','2020-09-02 19:50:00','2020-09-02 20:00:00','2020-09-02 20:10:00','2020-09-02 20:20:00']
end_times_list = ['2020-09-02 17:40:00','2020-09-02 20:20:00','2020-09-02 20:30:00']
我尝试了下面的方法,它只从开始日期时间创建一个日期范围,而不是从地板(分钟)
import pandas as pd
l = (pd.DataFrame(columns=['NULL'],index=pd.date_range('2020-09-02 17:33:04','2020-09-02 20:19:14',freq='10T'))
.between_time('07:00','22:00')
.index.strftime('%Y-%m-%d %H:%M:%S')
.tolist()
)
l
电流输出
['2020-09-02 17:33:04','2020-09-02 17:43:04','2020-09-02 17:53:04','2020-09-02 18:03:04','2020-09-02 18:13:04','2020-09-02 18:23:04','2020-09-02 18:33:04','2020-09-02 18:43:04','2020-09-02 18:53:04','2020-09-02 19:03:04','2020-09-02 19:13:04','2020-09-02 19:23:04','2020-09-02 19:33:04','2020-09-02 19:43:04','2020-09-02 19:53:04','2020-09-02 20:03:04','2020-09-02 20:13:04']
解决方法
您可以使用 Timestamp.round()
将开始/结束时间四舍五入为 10 分钟。
import pandas as pd
from datetime import datetime
start_time = '2020-09-02 17:33:04.472'
end_time = '2020-09-02 20:19:14.859'
start_times = pd.date_range(start= pd.Timestamp(start_time).round('10T'),end = pd.Timestamp(end_time).round('10T'),freq="10T")
end_times = start_times + pd.Timedelta('10T')
start_times_list = start_times.strftime('%Y-%m-%d %H:%M:%S').tolist()
end_times_list = end_times.strftime('%Y-%m-%d %H:%M:%S').tolist()
print(start_times_list)
print(end_times_list)
,
如果您确定输入格式,可能最容易使用的是:
newstarttime = starttime[:-8]+"0:00.000"
,
import pandas as pd
from datetime import datetime
import math
start_time = '2020-09-02 17:36:04.472'
end_time = '2020-09-02 20:19:14.859'
start_times = pd.date_range(start= pd.Timestamp(start_time).floor('10T'),end = pd.Timestamp(end_time).floor('10T'),freq="10T")
end_times = start_times + pd.Timedelta('10T')
start_times_list = start_times.strftime('%Y-%m-%d %H:%M:%S').tolist()
end_times_list = end_times.strftime('%Y-%m-%d %H:%M:%S').tolist()
print(start_times_list)
print(end_times_list)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。