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

Polars中如何基于zone_info列将UTC时间转换为本地时区

Polars动态时区转换实现方案

问题原因

Polars的dt.convert_time_zone方法的time_zone参数仅支持字符串常量,无法直接传入列表达式,因此直接用pl.col("zone_info")作为参数会抛出TypeError。

解决方案

方案1:逐行处理(适合小数据量)

利用map_elements函数,将zone_info列作为辅助参数传入,逐行完成时区转换:

pdf2 = pdf1.with_columns(
    pl.col("UTC").map_elements(
        lambda dt_val, tz: dt_val.convert_time_zone(tz),
        with_columns=["zone_info"],
        return_dtype=pl.Datetime
    ).alias("LocalTime")
)

注意:此方法为逐行操作,数据量较大时性能会受影响。

方案2:分组批量转换(适合大数据量)

通过group_by按时区分组,每组内统一执行向量化的时区转换,效率更高:

pdf2 = pdf1.group_by("zone_info").map_groups(
    lambda group_df: group_df.with_columns(
        pl.col("UTC").dt.convert_time_zone(group_df["zone_info"][0]).alias("LocalTime")
    )
)

此方法充分利用Polars的向量化优势,处理大规模数据集时推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:53:26