polars.Series.dt.round#
- Series.dt.round(every: str | dt.timedelta | IntoExprColumn) Series[source]#
将日期/日期时间范围划分为桶。
警告
此功能被视为不稳定。它可能会在任何时候更改,而不被视为破坏性更改。
间隔前半部分的每个日期/日期时间 被映射到其桶的开始。
间隔后半部分的每个日期/日期时间 被映射到其桶的末尾。
中间点被映射到其区间的起点。
使用原始时间戳的DST偏移量来定位模糊结果 - 例如,将
'2022-11-06 01:20:00 CST'四舍五入为'1h'结果为'2022-11-06 01:00:00 CST',而将'2022-11-06 01:20:00 CDT'四舍五入为'1h'结果为'2022-11-06 01:00:00 CDT'。- Parameters:
- every
每个间隔的开始和周期长度
- Returns:
- Series
数据类型为
Date或Datetime的系列。
注释
every参数是使用以下字符串语言创建的:1纳秒 (1 纳秒)
1微秒 (1 微秒)
1毫秒 (1 毫秒)
1秒 (1 秒)
1分钟 (1 minute)
1小时 (1小时)
1d (1个日历日)
1w (1个日历周)
1个月 (1个日历月)
1q (1个日历季度)
1年 (1个日历年)
这些字符串可以组合:
3d12h4m25s # 3天12小时4分钟25秒
“日历日”指的是第二天的相应时间(由于夏令时,可能不是24小时)。同样适用于“日历周”、“日历月”、“日历季度”和“日历年”。
示例
>>> from datetime import timedelta, datetime >>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 2) >>> s = pl.datetime_range( ... start, stop, timedelta(minutes=165), eager=True ... ).alias("datetime") >>> s shape: (9,) Series: 'datetime' [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.round("1h") shape: (9,) Series: 'datetime' [datetime[μs]] [ 2001-01-01 00:00:00 2001-01-01 03:00:00 2001-01-01 06:00:00 2001-01-01 08:00:00 2001-01-01 11:00:00 2001-01-01 14:00:00 2001-01-01 17:00:00 2001-01-01 19:00:00 2001-01-01 22:00:00 ] >>> round_str = s.dt.round("1h") >>> round_td = s.dt.round(timedelta(hours=1)) >>> round_str.equals(round_td) True
>>> start = datetime(2001, 1, 1) >>> stop = datetime(2001, 1, 1, 1) >>> s = pl.datetime_range(start, stop, "10m", eager=True).alias("datetime") >>> s.dt.round("30m") shape: (7,) Series: 'datetime' [datetime[μs]] [ 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 2001-01-01 01:00:00 ]