我有一个带日期和时间的csv文件。我想在时间范围(开始时间和结束时间)之间指定特定的时间间隔(60分钟)。我写了一个带有日期的代码。但这给我带来了错误。样本数量-5必须为非负数。然后,我用较少的数据检查了单独的csv文件。然后我发现我有时间像9:53,10:20,11:42...。然后当我分割查找num_periods时,它给了我一个错误。 例 取日期范围 2018年8月6日开始时间是6:00 2018/8/6结束时间是23:52 然后我之间的时间像是7:00、8:52、10:42等。 在那之后的第二天,我会有这样的时间段。 因此,当我尝试找到num_periods时,它给了我这个错误。 我想在此time_range之间指定时间 (start_time + time_interval(3600 in seconds(60min))in time_range之间) 有人可以给我解决方案吗? 我的代码是,
time_interval = 3600
date_array = []
date_array.append(pd.to_datetime(data['date'][0]).date())
start_time = []
end_time = []
temp_date = pd.to_datetime(data['date'][0]).date()
start_time.append(pd.to_datetime(data['time'][0], format='%H:%M:%S').time())
for i in range(len(data['date'])):
cur_date = pd.to_datetime(data['date'][i]).date()
if( cur_date > temp_date):
end_time.append(pd.to_datetime(data['time'][i-1], format='%H:%M:%S').time())
start_time.append(pd.to_datetime(data['time'][i], format='%H:%M:%S').time())
date_array.append(cur_date)
temp_date = cur_date
end_time.append(pd.to_datetime(data['time'][len(data['date'])-1], format='%H:%M:%S').time())
datetime_array = []
for i in range(len(date_array)):
s_time = datetime.datetime.combine(date_array[i],start_time[i])
e_time = datetime.datetime.combine(date_array[i], end_time[i])
timediff = (e_time - s_time)
num_periods = int(timediff.total_seconds()/time_interval) +1
time_list = pd.date_range(start=s_time, end = e_time, periods=num_periods ).to_pydatetime()
datetime_array.extend(time_list)
我的csv文件的
答案 0 :(得分:1)
好像num_periods
是负数:
num_periods = int(timediff.total_seconds()/time_interval) + 1
最简单的解决方案是改为使用abs
值:
num_periods = abs(int(timediff.total_seconds()/time_interval)) + 1
请注意:date_range
支持相反的范围(其中start> end)。