Skip to main content
`Ctrl`+`K`

# pandas.Timestamp.floor

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

  Return a new Timestamp floored to this resolution.

  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 an AmbiguousTimeError 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 an NonExistentTimeError if there are nonexistent times.

  Raises:
    ValueError if the freq cannot be converted.

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