Я пытаюсь выровнять временные метки 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()
, в чем разница и есть ли предпочтительный вариант?