pandas.Timestamp.floor#

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

Return a new Timestamp floored to this resolution.

This method rounds the Timestamp down to the nearest boundary of the given frequency. The result will never be later than the original Timestamp.

Parameters:
freqstr

Frequency string indicating the flooring resolution.

ambiguousbool or {‘raise’, ‘NaT’}, default ‘raise’

The behavior is as follows:

  • bool contains flags to determine if time is dst or not (note that this flag is only applicable for ambiguous fall dst dates).

  • ‘NaT’ will return NaT for an ambiguous time.

  • ‘raise’ will raise a ValueError for an ambiguous time.

nonexistent{‘raise’, ‘shift_forward’, ‘shift_backward’, ‘NaT’, timedelta}, default ‘raise’

A nonexistent time does not exist in a particular timezone where clocks moved forward due to DST.

  • ‘shift_forward’ will shift the nonexistent time forward to the closest existing time.

  • ‘shift_backward’ will shift the nonexistent time backward to the closest existing time.

  • ‘NaT’ will return NaT where there are nonexistent times.

  • timedelta objects will shift nonexistent times by the timedelta.

  • ‘raise’ will raise a ValueError if there are nonexistent times.

Raises:
ValueError if the freq cannot be converted.

See also

Timestamp.ceil

Round up a Timestamp to the specified resolution.

Timestamp.round

Round a Timestamp to the specified resolution.

Series.dt.floor

Round down the datetime values in a Series.

Notes

If the Timestamp has a timezone, flooring will take place relative to the local (“wall”) time and re-localized to the same timezone. When flooring near daylight savings time, use nonexistent and ambiguous to control the re-localization behavior.

Examples

Create a timestamp object:

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

A timestamp can be floored using multiple frequency units:

>>> ts.floor(freq='h')  # hour
Timestamp('2020-03-14 15:00:00')
>>> ts.floor(freq='min')  # minute
Timestamp('2020-03-14 15:32:00')
>>> ts.floor(freq='s')  # seconds
Timestamp('2020-03-14 15:32:52')
>>> ts.floor(freq='ns')  # nanoseconds
Timestamp('2020-03-14 15:32:52.192548651')

freq can also be a multiple of a single unit, like ‘5min’ (i.e. 5 minutes):

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

or a combination of multiple units, like ‘1h30min’ (i.e. 1 hour and 30 minutes):

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

Analogous for pd.NaT:

>>> pd.NaT.floor()
NaT

When rounding near a daylight savings time transition, use ambiguous or nonexistent to control how the timestamp should be re-localized.

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