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

Polars如何高效批量将_at结尾列转为datetime类型?

批量将Polars中以'_at'结尾的列转换为datetime类型

问题原因

你之前的代码无法运行,是因为cs.ends_with('_at')返回的是Selector选择器对象,而非Polars的列表达式(Expr),所以不能直接链式调用.str.to_datetime()方法。

可行解决方案

方法1:用pl.col()包裹选择器(推荐)

直接将选择器作为参数传入pl.col(),生成对应的列表达式后再进行转换:

import polars as pl
import polars.selectors as cs

df = df.with_columns(
    pl.col(cs.ends_with('_at')).str.to_datetime("%Y-%m-%dT%H:%M:%S%.3f%:z")
)

方法2:通过选择器获取列名列表后转换

先提取所有目标列的名称,再用列名列表生成列表达式:

import polars as pl
import polars.selectors as cs

# 获取所有以'_at'结尾的列名
dt_col_names = df.select(cs.ends_with('_at')).columns

# 批量转换
df = df.with_columns(pl.col(dt_col_names).str.to_datetime("%Y-%m-%dT%H:%M:%S%.3f%:z"))

方法3:用pipe()处理选择器

利用选择器的pipe()方法,将选择到的列传递给转换逻辑:

import polars as pl
import polars.selectors as cs

df = df.with_columns(
    cs.ends_with('_at').pipe(
        lambda cols: pl.col(cols).str.to_datetime("%Y-%m-%dT%H:%M:%S%.3f%:z")
    )
)

所有方法都能实现批量转换,其中方法1最简洁高效,符合Polars的API设计风格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 06:02:41