Диапазон дат, рассчитывающий только 8737 часов в год? - PullRequest
0 голосов
/ 01 марта 2020

Я использую python pandas диапазон дат пакет для создания списка часовых меток для календарного года. Я делаю код, чтобы сделать это, это выглядит так: year = 2018 times = list(pd.date_range('{}-01-01'.format(year), '{}-12-31'.format(year), freq='H'))

Я ожидаю, что длина times будет 8760 (количество часов в году). Но когда я просматриваю длину вектора times, это всего 8737. Почему ????

1 Ответ

0 голосов
/ 01 марта 2020

При указании списка по диапазону первая граница включается, а вторая - нет. Итак, здесь вы включаете {}-01-01, а не {}-12-31. Но вы учитываете значение полуночи.

Итак, вам нужно включить последний день года, но пропустить «праздничный» новогодний час:

>>> year = 2018
>>> times = list(pd.date_range('{}-01-01'.format(year), '{}-01-01'.format(year+1), freq='H'))
>>> times = times[:-1]
>>> len(times)
8760

Вам необходимо включить новогодний день, {}-01-01 , так что вы получите канун Нового года, {}-12-31. Но тогда вы получите полночный час, потому что это то, что начинает день. Следовательно, необходимо исключить последнюю запись в списке: times = times[:-1], чтобы вы заканчивали в 23:00 12-31.

...