pandas.Timestamp.round#

Timestamp.round(freq, ambiguous='raise', nonexistent='raise')#

将时间戳四舍五入到指定的分辨率。

此方法将给定的 Timestamp 向下舍入到指定的频率级别。在数据分析中特别有用,可以将时间戳归一化到常规频率间隔。例如,舍入到最近的分钟、小时或天可以帮助进行时间序列比较或重采样操作。

参数:
freqstr

频率字符串,表示舍入分辨率。

模糊bool 或 {‘raise’, ‘NaT’},默认 ‘raise’

行为如下:

  • bool 包含标志以确定时间是否为夏令时(请注意,此标志仅适用于模糊的秋季夏令时日期)。

  • ‘NaT’ 将对不明确的时间返回 NaT。

  • ‘raise’ 将引发一个模糊时间的 ValueError。

不存在{‘raise’, ‘shift_forward’, ‘shift_backward’, ‘NaT’, timedelta}, 默认 ‘raise’

在一个特定时区中,由于夏令时导致时钟向前移动,不存在的时间在这个时区中是不存在的。

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

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

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

  • timedelta 对象会将不存在的时间按 timedelta 进行调整。

  • ‘raise’ 如果存在不存在的时间,将引发 ValueError。

返回:
一个新的时间戳,四舍五入到给定的 freq 分辨率
引发:
如果频率无法转换,则引发 ValueError

参见

datetime.round

在原生 Python datetime 模块中类似的行为。

Timestamp.floor

将时间戳向下舍入到指定频率的最接近倍数。

Timestamp.ceil

将时间戳向上舍入到指定频率的最接近倍数。

备注

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

例子

创建一个时间戳对象:

>>> ts = pd.Timestamp('2020-03-14T15:32:52.192548651')

时间戳可以使用多种频率单位进行舍入:

>>> ts.round(freq='h')  # hour
Timestamp('2020-03-14 16:00:00')
>>> ts.round(freq='min')  # minute
Timestamp('2020-03-14 15:33:00')
>>> ts.round(freq='s')  # seconds
Timestamp('2020-03-14 15:32:52')
>>> ts.round(freq='ms')  # milliseconds
Timestamp('2020-03-14 15:32:52.193000')

freq 也可以是单个单位的多倍,例如 ‘5min’(即 5 分钟):

>>> ts.round(freq='5min')
Timestamp('2020-03-14 15:35:00')

或者多个单位的组合,例如 ‘1h30min’(即 1 小时 30 分钟):

>>> ts.round(freq='1h30min')
Timestamp('2020-03-14 15:00:00')

类似于 pd.NaT

>>> pd.NaT.round()
NaT

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

>>> ts_tz = pd.Timestamp("2021-10-31 01:30:00").tz_localize("Europe/Amsterdam")
>>> ts_tz.round("h", ambiguous=False)
Timestamp('2021-10-31 02:00:00+0100', tz='Europe/Amsterdam')
>>> ts_tz.round("h", ambiguous=True)
Timestamp('2021-10-31 02:00:00+0200', tz='Europe/Amsterdam')