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

Polars中无法将字符串类型转换为纯日期格式问题求助

从带时间的字符串日期列提取日期部分的解决方案

问题背景

我尝试从字符串类型的datetime列中提取仅date部分,但未得到正确结果。不确定日期中的单数字格式是否会引发问题?

数据示例

import polars as pl

df = pl.from_repr("""
┌──────┬──────────────────────┐
│ YEAR ┆ FL_DATE              │
│ ---  ┆ ---                  │
│ i64  ┆ str                  │
╞══════╪══════════════════════╡
│ 2023 ┆ 1/1/2023 12:00:00 AM │
│ 2023 ┆ 1/1/2023 12:00:00 AM │
│ 2023 ┆ 1/1/2023 12:00:00 AM │
└──────┴──────────────────────┘
""")

失败尝试及输出

尝试代码

# 尝试1
df.select(
    pl.col('FL_DATE').alias('date_only').str.to_date("%m/%d/%Y")
)

# 尝试2
df.select(
    pl.col('FL_DATE').alias('date_only').str.to_date("%m/%d/%Y").dt.to_string("%Y-%m")
)

# 尝试3
df.select(
    pl.col('FL_DATE').alias('date_only').str.to_datetime("%m/%d/%Y",strict=False).cast(pl.Date)
)

# 尝试4
df.select(
    pl.col('FL_DATE').cast(pl.String).str.to_datetime("%m/%d/%Y",strict=False
                                                      ).cast(pl.Date).alias('date_only')
)

对应失败输出

1. InvalidOperationError: conversion from `str` to `date` failed in column 'date_only'
2. InvalidOperationError: conversion from `str` to `date` failed in column 'date_only'
3. null
4. null

问题原因

失败的核心原因是格式字符串没有匹配原字符串的完整结构。原FL_DATE列的字符串包含日期和时间部分(比如1/1/2023 12:00:00 AM),但你使用的%m/%d/%Y只匹配日期部分,导致解析失败。单数字的月/日格式不是问题,Polars的日期解析支持单数字的月和日。

可行解决方案

方法1:用完整格式字符串解析后转日期

直接使用包含时间的格式字符串解析为datetime,再转为date类型:

df.select(
    pl.col('FL_DATE').str.to_datetime("%m/%d/%Y %I:%M:%S %p").cast(pl.Date).alias('date_only')
)

格式说明:

  • %m/%d/%Y:匹配月/日/年(支持单数字格式)
  • %I:%M:%S:匹配12小时制的时:分:秒
  • %p:匹配AM/PM标识

方法2:先截取日期部分再解析

通过字符串分割提取纯日期部分,再解析为date类型:

df.select(
    pl.col('FL_DATE').str.split(" ").first().str.to_date("%m/%d/%Y").alias('date_only')
)

这里用空格分割字符串,取第一个元素(即纯日期部分),再用%m/%d/%Y解析即可。

方法3:自动推断格式解析

如果日期格式标准,可以关闭严格模式让Polars自动推断格式:

df.select(
    pl.col('FL_DATE').str.to_datetime(strict=False).cast(pl.Date).alias('date_only')
)

验证结果

以上三种方法都能得到正确的日期列,输出示例:

┌────────────┐
│ date_only  │
│ ---        │
│ date       │
╞════════════╡
│ 2023-01-01 │
│ 2023-01-01 │
│ 2023-01-01 │
└────────────┘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:22:29