pandas DatetimeIndex.snap против DatetimeIndex.round - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь выровнять временные метки pandas DatetimeIndex (в конечном счете, серии). Я пробовал snap() и round() следующим образом:

rng = pd.DatetimeIndex(['1/1/2018 11:59:00', '1/1/2018 13:01',
                        '1/1/2018 13:59:00', '1/1/2018 14:05', 
                        '1/1/2018 15:00', '1/2/2018 02:01'])
print(rng)
print(rng.round('H'))
print(rng.snap(freq='H'))

, который производит это:

DatetimeIndex(['2018-01-01 11:59:00', '2018-01-01 13:01:00',
               '2018-01-01 13:59:00', '2018-01-01 14:05:00',
               '2018-01-01 15:00:00', '2018-01-02 02:01:00'],
              dtype='datetime64[ns]', freq=None)
DatetimeIndex(['2018-01-01 12:00:00', '2018-01-01 13:00:00',
               '2018-01-01 14:00:00', '2018-01-01 14:00:00',
               '2018-01-01 15:00:00', '2018-01-02 02:00:00'],
              dtype='datetime64[ns]', freq=None)
DatetimeIndex(['2018-01-01 11:59:00', '2018-01-01 13:01:00',
               '2018-01-01 13:59:00', '2018-01-01 14:05:00',
               '2018-01-01 15:00:00', '2018-01-02 02:01:00'],
              dtype='datetime64[ns]', freq='H')

Кажется, что round() создал время, которое я хочу, позволяя дубликаты, с которыми мне придется разобраться на следующем шаге. В отличие от этого, snap() ничего не делал с временными метками. Это изменило частоту временных рядов, но позволило дублировать запись. Я не уверен, что штампы freq = 'H' и off-kilter в порядке ... Я знаю, что есть приложения, в которых намерение пробовать один раз в час и необходимость записывать время - это оба требования.

Я неправильно понимаю, как snap() должен работать? Помимо сложных случаев, связанных с часовыми поясами, которые, похоже, являются работой round(), в чем разница и есть ли предпочтительный вариант?

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