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

Polars中datetime列格式化为%Y%m字符串的方法求助

解决Polars DataFrame datetime列转%Y%m格式字符串的问题

错误原因

你遇到的AttributeError: 'Expr' object has no attribute 'strftime',是因为Polars中需要通过表达式的.dt属性来访问datetime类型的处理方法,直接调用strftime无效。

正确实现方法

通过.dt.strftime()方法即可完成datetime列的格式化,以下是两种常用实现方式:

方式1:添加新的格式化列

from datetime import datetime
import polars as pl

data = {
    "ID" : [1,2,3],
    "dates" : [datetime(2024,1,2),datetime(2024,1,3),datetime(2024,1,4)],
}
df = pl.DataFrame(data)

# 添加名为formatted_date的新列,格式为%Y%m
df = df.with_columns(
    pl.col("dates").dt.strftime("%Y%m").alias("formatted_date")
)
print(df)

执行后输出:

shape: (3, 3)
┌─────┬─────────────────────┬──────────────┐
│ ID  ┆ dates               ┆ formatted_date │
│ --- ┆ ---                 ┆ ---          │
│ i64 ┆ datetime[μs]        ┆ str          │
╞═════╪═════════════════════╪══════════════╡
│ 1   ┆ 2024-01-02 00:00:00 ┆ 202401       │
│ 2   ┆ 2024-01-03 00:00:00 ┆ 202401       │
│ 3   ┆ 2024-01-04 00:00:00 ┆ 202401       │
└─────┴─────────────────────┴──────────────┘

方式2:替换原datetime列

如果不需要保留原dates列,可直接替换:

# 方式一:覆盖原列
df = df.with_columns(
    pl.col("dates").dt.strftime("%Y%m").alias("dates")
)

# 方式二:重新构造DataFrame
df = df.select(
    "ID",
    pl.col("dates").dt.strftime("%Y%m").alias("dates")
)

补充说明

  • .dt是Polars专门用于处理datetime/datetime64类型列的属性,提供提取年/月/日、时间格式化等各类时间操作。
  • strftime的格式符和Python标准库datetime.strftime完全一致,可按需调整格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:22:02