pandas.Series.dt.round#

Series.dt.round(*args, **kwargs)[源代码]#

对数据执行舍入操作,以指定的`freq`为单位。

Parameters:
freqstr 或 Offset

将索引四舍五入到的频率级别。必须是固定频率,如 ‘S’(秒),而不是 ‘ME’(月末)。有关可能的 freq 值列表,请参阅 frequency aliases

歧义 (ambiguous)‘infer’, bool-ndarray, ‘NaT’, 默认 ‘raise’

仅适用于 DatetimeIndex:

  • ‘infer’ 将尝试根据顺序推断DST转换的小时

  • bool-ndarray,其中 True 表示 DST 时间,False 表示非 DST 时间(请注意,此标志仅适用于歧义时间)

  • ‘NaT’ 将在有歧义时间的地方返回 NaT

  • 如果存在歧义时间,’raise’ 将引发 AmbiguousTimeError。

不存在 (nonexistent)‘shift_forward’, ‘shift_backward’, ‘NaT’, timedelta, default ‘raise’

由于 DST 导致时钟向前移动,某个时区中不存在的某个时间点。

  • ‘shift_forward’ 会将不存在的时间向前移动到最近的可用时间。

  • ‘shift_backward’ 会将不存在的时间向后移动到最近的可用时间。

  • ‘NaT’ 在有不存在的时间时返回 NaT。

  • timedelta 对象会将不存在的时间按 timedelta 移动。

  • ‘raise’ 如果存在不存在的时间,则会引发一个 NonExistentTimeError。

Returns:
DatetimeIndex, TimedeltaIndex, 或 Series

对于 DatetimeIndex 或 TimedeltaIndex,返回相同类型的索引;对于 Series,返回具有相同索引的 Series。

Raises:
如果 freq 无法转换,则引发 ValueError。

Notes

如果时间戳具有时区,则它们将相对于本地(“挂钟”)时间进行舍入,并重新本地化为同一时区。在接近夏令时时进行舍入时,请使用 nonexistentambiguous 来控制重新本地化行为。

Examples

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]

在靠近夏令时转换时进行舍入时,使用 ambiguousnonexistent 来控制应如何重新本地化时间戳。

>>> 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)