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

如何将Polars的datetime列转换为仅含日期的字符串列?

Polars:将Datetime列转换为仅保留日期的字符串列

要实现只保留日期部分的字符串转换,有两种高效的方法:

方法1:使用strftime自定义格式

直接通过strftime方法指定日期格式(如%Y-%m-%d),一步到位生成目标字符串:

import polars as pl

df = pl.from_repr("""
┌─────────────────────┐
│ date_time           │
│ ---                 │
│ datetime[ns]        │
╞═════════════════════╡
│ 2007-04-19 00:00:00 │
│ 2007-05-02 00:00:00 │
│ 2007-05-03 00:00:00 │
│ 2007-05-03 00:00:00 │
└─────────────────────┘
""")

# 转换并生成仅含日期的字符串列
result = df.with_columns(pl.col('date_time').strftime("%Y-%m-%d").alias('date_only'))
print(result)

输出结果:

shape: (4, 2)
┌─────────────────────┬────────────┐
│ date_time           ┆ date_only  │
│ ---                 ┆ ---        │
│ datetime[ns]        ┆ str        │
╞═════════════════════╪════════════╡
│ 2007-04-19 00:00:00 ┆ 2007-04-19 │
│ 2007-05-02 00:00:00 ┆ 2007-05-02 │
│ 2007-05-03 00:00:00 ┆ 2007-05-03 │
│ 2007-05-03 00:00:00 ┆ 2007-05-03 │
└─────────────────────┴────────────┘

这种方法的优势是可以灵活自定义日期格式(比如%m/%d/%Y),满足不同输出需求。

方法2:先转Date类型再转字符串

先将Datetime列转换为Polars的Date类型(仅存储日期信息),再转为字符串:

result = df.with_columns(pl.col('date_time').cast(pl.Date).cast(pl.String).alias('date_only'))
print(result)

输出结果和方法1一致,适合只需要ISO标准日期格式(YYYY-MM-DD)的场景,无需额外指定格式字符串。

注意:直接用cast(pl.String)转换Datetime列会保留完整的时间戳(包括毫秒),这就是你之前得到不符合预期结果的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:20:29