pandas.DatetimeIndex.ceil#
- DatetimeIndex.ceil(*args, **kwargs)[источник]#
Выполняет операцию округления вверх для данных до указанной freq.
- Параметры:
- freqstr или Offset
Уровень частоты, до которого округляется индекс. Должен быть фиксированной частотой, например 'S' (секунда), а не 'ME' (конец месяца). См. псевдонимы частоты для списка возможных freq значения.
- неоднозначный‘infer’, bool-ndarray, ‘NaT’, по умолчанию ‘raise’
Актуально только для DatetimeIndex:
'infer' попытается определить часы перехода на летнее время на основе порядка
bool-ndarray, где True означает время летнего времени, False обозначает время не летнего времени (обратите внимание, что этот флаг применим только для неоднозначных времён)
‘NaT’ вернет NaT там, где есть неоднозначные времена
'raise' вызовет AmbiguousTimeError, если есть неоднозначные времена.
- несуществующий'shift_forward', 'shift_backward', 'NaT', timedelta, по умолчанию 'raise'
Несуществующее время не существует в определенном часовом поясе, где часы перевели вперед из-за летнего времени.
'shift_forward' сместит несуществующее время вперед до ближайшего существующего времени
'shift_backward' сдвинет несуществующее время назад к ближайшему существующему времени
‘NaT’ вернет NaT там, где есть несуществующие времена
объекты timedelta будут сдвигать несуществующие времена на timedelta
'raise' вызовет ошибку NonExistentTimeError, если есть несуществующие времена.
- Возвращает:
- DatetimeIndex, TimedeltaIndex или Series
Индекс того же типа для DatetimeIndex или TimedeltaIndex, или Series с тем же индексом для Series.
- Вызывает:
- ValueError, если freq не может быть преобразован.
Примечания
Если временные метки имеют часовой пояс, округление вверх будет происходить относительно локального ("настенного") времени и перелокализовано в тот же часовой пояс. При округлении вверх вблизи перехода на летнее время используйте
nonexistentиambiguousдля управления поведением релокализации.Примеры
DatetimeIndex
>>> rng = pd.date_range('1/1/2018 11:59:00', periods=3, freq='min') >>> rng DatetimeIndex(['2018-01-01 11:59:00', '2018-01-01 12:00:00', '2018-01-01 12:01:00'], dtype='datetime64[ns]', freq='min') >>> rng.ceil('h') DatetimeIndex(['2018-01-01 12:00:00', '2018-01-01 12:00:00', '2018-01-01 13:00:00'], dtype='datetime64[ns]', freq=None)
Series
>>> pd.Series(rng).dt.ceil("h") 0 2018-01-01 12:00:00 1 2018-01-01 12:00:00 2 2018-01-01 13:00:00 dtype: datetime64[ns]
При округлении вблизи перехода на летнее время используйте
ambiguousилиnonexistentдля управления тем, как должна быть перелокализована временная метка.>>> rng_tz = pd.DatetimeIndex(["2021-10-31 01:30:00"], tz="Europe/Amsterdam")
>>> rng_tz.ceil("h", ambiguous=False) DatetimeIndex(['2021-10-31 02:00:00+01:00'], dtype='datetime64[ns, Europe/Amsterdam]', freq=None)
>>> rng_tz.ceil("h", ambiguous=True) DatetimeIndex(['2021-10-31 02:00:00+02:00'], dtype='datetime64[ns, Europe/Amsterdam]', freq=None)