polars.datetime_ranges#

polars.datetime_ranges(
start: datetime | date | IntoExprColumn,
end: datetime | date | IntoExprColumn,
interval: str | timedelta = '1d',
*,
closed: ClosedInterval = 'both',
time_unit: TimeUnit | None = None,
time_zone: str | None = None,
eager: bool = False,
) Series | Expr[source]#

创建一个日期时间范围的列。

Parameters:
start

日期时间范围的下限。

end

日期时间范围的上限。

interval

范围周期的时间间隔,指定为Python timedelta对象 或使用Polars持续时间字符串语言(请参阅下面的“注释”部分)。

closed{‘both’, ‘left’, ‘right’, ‘none’}

定义范围的哪些边是闭合的(包含的)。

time_unit{None, ‘ns’, ‘us’, ‘ms’}

结果Datetime数据类型的时间单位。

time_zone

生成的Datetime数据类型的时区。

eager

立即评估并返回一个Series。 如果设置为False(默认),则返回一个表达式。

Returns:
Expr or Series

数据类型为 List(Datetime) 的列。

注释

interval 是根据以下字符串语言创建的:

  • 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 datetime
>>> df = pl.DataFrame(
...     {
...         "start": [datetime(2022, 1, 1), datetime(2022, 1, 2)],
...         "end": datetime(2022, 1, 3),
...     }
... )
>>> with pl.Config(fmt_str_lengths=100):
...     df.select(datetime_range=pl.datetime_ranges("start", "end"))
shape: (2, 1)
┌─────────────────────────────────────────────────────────────────┐
│ datetime_range                                                  │
│ ---                                                             │
│ list[datetime[μs]]                                              │
╞═════════════════════════════════════════════════════════════════╡
│ [2022-01-01 00:00:00, 2022-01-02 00:00:00, 2022-01-03 00:00:00] │
│ [2022-01-02 00:00:00, 2022-01-03 00:00:00]                      │
└─────────────────────────────────────────────────────────────────┘