
本文介绍如何使用 Polars 的 dt.strftime() 方法,将 datetime 列转换为可读性强的字符串格式(如 "Oct"、"Tuesday"),并提供常用格式代码与完整示例。
本文介绍如何使用 polars 的 `dt.strftime()` 方法,将 datetime 列转换为可读性强的字符串格式(如 "oct"、"tuesday"),并提供常用格式代码与完整示例。
在 Polars 中,dt.month() 和 dt.weekday() 等方法仅返回数值(如 10 表示十月,2 表示星期二),若需获取名称形式(如 "October" 或 "Saturday"),必须借助字符串格式化能力——即 pl.Expr.dt.strftime()。
该方法接受标准 chrono strftime 格式字符串,支持本地化(需配合 locale 参数,见下文注意事项),是提取日/月/周名称最直接、高效的方式。
✅ 常用格式代码速查
| 格式符 | 含义 | 示例(2024-10-01) |
|---|---|---|
%B |
完整月份名 | "October" |
%b |
缩写月份名(3字母) | "Oct" |
%A |
完整星期名 | "Tuesday" |
%a |
缩写星期名(3字母) | "Tue" |
? 完整代码示例
import polars as pl
from datetime import datetime
df = pl.DataFrame({
"date": [datetime(2024, 10, 1), datetime(2024, 11, 2)]
})
result = df.with_columns(
pl.col("date").dt.strftime("%b").alias("Month"), # → "Oct", "Nov"
pl.col("date").dt.strftime("%A").alias("Day") # → "Tuesday", "Saturday"
)
print(result)输出:
shape: (2, 3) ┌─────────────────────┬───────┬──────────┐ │ date ┆ Month ┆ Day │ │ --- ┆ --- ┆ --- │ │ datetime[μs] ┆ str ┆ str │ ╞═════════════════════╪═══════╪══════════╡ │ 2024-10-01 00:00:00 ┆ Oct ┆ Tuesday │ │ 2024-11-02 00:00:00 ┆ Nov ┆ Saturday │ └─────────────────────┴───────┴──────────┘
⚠️ 注意事项
-
默认使用系统 locale:
strftime的输出语言取决于当前运行环境的 locale 设置(如LANG=en_US.UTF-8输出英文)。如需多语言支持(如中文“十月”、“星期二”),需显式设置locale参数(Polars ≥ 0.20.16+ 支持):# 示例:Linux/macOS 下启用中文(需系统已安装对应 locale) pl.col("date").dt.strftime("%B", locale="zh_CN.UTF-8") -
列类型自动推断:
strftime()总是返回pl.String类型,无需手动.cast(pl.String)。 - 性能友好:所有操作均在 Polars 的底层 Rust 引擎中完成,适用于大规模数据集。
掌握 dt.strftime() 不仅能解决日/月名称提取问题,还可灵活生成自定义时间标签(如 "2024-Q4"、"2024-W40"),是 Polars 时间处理工作流中的关键技能。

















