pandas.Series.dt.round#
- Series.dt.round(*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.round('h') DatetimeIndex(['2018-01-01 12:00:00', '2018-01-01 12:00:00', '2018-01-01 12:00:00'], dtype='datetime64[ns]', freq=None)
Series
>>> pd.Series(rng).dt.round("h") 0 2018-01-01 12:00:00 1 2018-01-01 12:00:00 2 2018-01-01 12:00:00 dtype: datetime64[ns]
При округлении вблизи перехода на летнее время используйте
ambiguousилиnonexistentдля управления тем, как должна быть перелокализована временная метка.>>> rng_tz = pd.DatetimeIndex(["2021-10-31 03:30:00"], tz="Europe/Amsterdam")
>>> rng_tz.floor("2h", ambiguous=False) DatetimeIndex(['2021-10-31 02:00:00+01:00'], dtype='datetime64[ns, Europe/Amsterdam]', freq=None)
>>> rng_tz.floor("2h", ambiguous=True) DatetimeIndex(['2021-10-31 02:00:00+02:00'], dtype='datetime64[ns, Europe/Amsterdam]', freq=None)