Количество сэмплов -5 должно быть неотрицательным при использовании panda python - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть 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 в секундах (60 минут)) между 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)

ошибка: enter image description here

подмножество моего CSV-файла enter image description here

1 Ответ

0 голосов
/ 05 февраля 2019

Похоже, что num_periods отрицательно:

num_periods = int(timediff.total_seconds()/time_interval) + 1 

самое простое решение - принять значение abs вместо:

num_periods = abs(int(timediff.total_seconds()/time_interval)) + 1 

Примечание: поддержка date_rangeдиапазоны в обратном порядке (где начало> конец).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...