You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Polars中实现类似pandas.Series.dt.ceil的时间戳向上取整方法

Polars中实现类似Pandas dt.ceil的简洁方法

需求明确:

  • 整分钟时间戳保持不变,如2023-01-01 10:05:00
  • 非整分钟时间戳向上取整到下一分钟,如2023-01-01 10:05:01转为2023-01-01 10:06:00

在Pandas中可以直接用dt.ceil实现:

import polars as pl
import datetime

df = pl.DataFrame(
    {"timestamp" :[
        datetime.datetime(2023, 1, 1, 10, 5, 0),
        datetime.datetime(2023, 1, 1, 10, 5, 30),
        datetime.datetime(2023, 1, 1, 10, 6, 0),
        datetime.datetime(2023, 1, 1, 10, 6, 1),
    ]
    }
)
df['timestamp'].to_pandas().dt.ceil('1min')

你目前用的Polars写法确实可行,但其实Polars在0.18.0及以上版本已经支持dt.ceil()方法,完全等价于Pandas的dt.ceil,写法更简洁:

import polars as pl
import datetime

df = pl.DataFrame(
    {"timestamp" :[
        datetime.datetime(2023, 1, 1, 10, 5, 0),
        datetime.datetime(2023, 1, 1, 10, 5, 30),
        datetime.datetime(2023, 1, 1, 10, 6, 0),
        datetime.datetime(2023, 1, 1, 10, 6, 1),
    ]
    }
)

# 直接调用dt.ceil完成向上取整
df = df.with_columns(pl.col("timestamp").dt.ceil("1m"))
print(df)

运行后输出结果完全符合需求:

┌─────────────────────┐
│ timestamp           │
│ ---                 │
│ datetime[μs]        │
╞═════════════════════╡
│ 2023-01-01 10:05:00 │
│ 2023-01-01 10:06:00 │
│ 2023-01-01 10:06:00 │
│ 2023-01-01 10:07:00 │
└─────────────────────┘

内容的提问来源于stack exchange,提问作者0x26res

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 03:02:07