polars.Series.dt.truncate#

Series.dt.truncate(every: str | dt.timedelta, offset: str | dt.timedelta | None = None) Series[source]#

Divide the date/ datetime range into buckets.

Each date/datetime is mapped to the start of its bucket.

Parameters:
every

Every interval start and period length

offset

Offset the window

Returns:
Date/Datetime series

Notes

The every and offset argument are created with the the following string language:

  • 1ns # 1 nanosecond

  • 1us # 1 microsecond

  • 1ms # 1 millisecond

  • 1s # 1 second

  • 1m # 1 minute

  • 1h # 1 hour

  • 1d # 1 day

  • 1w # 1 calendar week

  • 1mo # 1 calendar month

  • 1y # 1 calendar year

These strings can be combined:

  • 3d12h4m25s # 3 days, 12 hours, 4 minutes, and 25 seconds

Examples

>>> from datetime import timedelta, datetime
>>> start = datetime(2001, 1, 1)
>>> stop = datetime(2001, 1, 2)
>>> s = pl.date_range(start, stop, timedelta(minutes=165), name="dates")
>>> s
shape: (9,)
Series: 'dates' [datetime[μs]]
[
    2001-01-01 00:00:00
    2001-01-01 02:45:00
    2001-01-01 05:30:00
    2001-01-01 08:15:00
    2001-01-01 11:00:00
    2001-01-01 13:45:00
    2001-01-01 16:30:00
    2001-01-01 19:15:00
    2001-01-01 22:00:00
]
>>> s.dt.truncate("1h")
shape: (9,)
Series: 'dates' [datetime[μs]]
[
    2001-01-01 00:00:00
    2001-01-01 02:00:00
    2001-01-01 05:00:00
    2001-01-01 08:00:00
    2001-01-01 11:00:00
    2001-01-01 13:00:00
    2001-01-01 16:00:00
    2001-01-01 19:00:00
    2001-01-01 22:00:00
]
>>> s.dt.truncate("1h").series_equal(s.dt.truncate(timedelta(hours=1)))
True
>>> start = datetime(2001, 1, 1)
>>> stop = datetime(2001, 1, 1, 1)
>>> s = pl.date_range(start, stop, "10m", name="dates")
>>> s
shape: (7,)
Series: 'dates' [datetime[μs]]
[
        2001-01-01 00:00:00
        2001-01-01 00:10:00
        2001-01-01 00:20:00
        2001-01-01 00:30:00
        2001-01-01 00:40:00
        2001-01-01 00:50:00
        2001-01-01 01:00:00
]
>>> s.dt.truncate("30m")
shape: (7,)
Series: 'dates' [datetime[μs]]
[
        2001-01-01 00:00:00
        2001-01-01 00:00:00
        2001-01-01 00:00:00
        2001-01-01 00:30:00
        2001-01-01 00:30:00
        2001-01-01 00:30:00
        2001-01-01 01:00:00
]