如何对与range()函数一起使用的时间片进行编码



我有一个简单的函数,但我不确定如何正确地对导致错误的范围部分进行编码。是否有处理此类数据的最佳实践?

mean_error = []
for time in range(0500-0515,0800-0815):
train = melt[melt['Time'] < time]
val = melt[melt['Time'] == time]
SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers

范围实际上只适用于整数,因此如果您想对循环路由执行此操作,直观的方法是使用范围来计算偏移量。并将其封装在生成器中,生成每个周期的开始和结束时间。

from datetime import datetime, timedelta
start_time = datetime(1,1,1, 5, 0) # We'll ignore date portion, it's set to 1st Jan, 0001
# Create a generator to produce tuples of start and end times (05:00, 05:15)
time_generator = (
((start_time + timedelta(minutes=mins)).time(), (start_time + timedelta(minutes=mins+15)).time())
for mins in range(0, 195, 15)  # 195 = 3 hours & 15 minutes
)
for period_start, period_end in time_generator:
print(period_start, period_end)  # You can delete this line, it just demos what this loop produces - these objects are `time` instances

# You'll need to decide whether the time variable in your loop means period_start (e.g. 05:00) or period_end (e.g. 05:15) or both (e.g. tuple: (05:00, 05:15))
# Assuming for now it means period_start
train = melt[melt['Time'] < period_start]
val = melt[melt['Time'] == period_start]

最新更新