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

如何利用Polars偏移列对日期列执行时间偏移计算?

解决方案

方法一:使用dt.add结合动态构造的Duration

Polars的dt.offset_by仅支持固定字符串偏移,无法接收列作为参数。要实现按行动态添加小时和分钟偏移,最佳方式是用dt.add方法,配合pl.duration动态生成每行对应的时长增量:

df = pl.DataFrame(
    {
        "date": ["2022-01-01", "2022-01-02"],
        "hroff": [5, 2],
        "minoff": [1, 2]
    }
).with_columns(pl.col('date').str.to_date())

# 生成带偏移的newdate列
result = df.with_columns(
    pl.col("date")
    .cast(pl.Datetime)
    .dt.convert_time_zone("UTC")
    .dt.add(pl.duration(hours=pl.col("hroff"), minutes=pl.col("minoff")))
    .alias("newdate")
)

print(result)

方法二:通过算术运算直接累加总分钟数

也可以将小时和分钟转换成总分钟数,直接与datetime列进行算术运算(Polars支持datetime与整数分钟的加法):

result = df.with_columns(
    (pl.col("date").cast(pl.Datetime).dt.convert_time_zone("UTC") + 
     pl.col("hroff") * 60 + pl.col("minoff")).alias("newdate")
)

说明

两种方法都能实现动态偏移需求,其中方法一更直观,符合时间操作的语义;方法二则更简洁,适合快速计算。

内容的提问来源于stack exchange,提问作者Dean MacGregor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:20:33