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

Polars Python解析时无法转换为Datetime格式问题求助

Polars Python 无法转换Datetime格式的排查与解决

已尝试的方案

  • 方案1:读取CSV时直接解析日期

    df = pl.read_csv(file, ignore_errors=True, parse_dates=True)
    df.columns = list(map(lambda x: x.replace(' ', ''), df.columns))
    df_new = df.select(pl.col(['Date_Convert','Region']))
    print(df_new.head())
    

    结果:输出shape: (5, 2),但Date_Convert未转为Datetime格式。

  • 方案2:后续手动转换

    df = df.with_columns(pl.col('Date_Convert').str.strptime(pl.Datetime, strict=False, fmt='%Y/%B/%d %H:%M'))
    

    结果:转换失败,字段仍非Datetime类型。

可能的原因与解决步骤

1. 日期格式不匹配(最常见问题)

你指定的fmt='%Y/%B/%d %H:%M'对应格式是年/月份全称/日 时:分(例如2023/October/05 14:30),如果实际数据格式和这个不一致,strict=False会静默失败,直接返回原字符串。

  • 解决:先查看原始数据格式:
    print(df['Date_Convert'].head(10))
    
    根据实际格式调整fmt参数:
    • 若格式为年/月/日 时:分(如2023/10/05 14:30),用fmt='%Y/%m/%d %H:%M'
    • 若格式为月/日/年 时:分(如10/05/2023 14:30),用fmt='%m/%d/%Y %H:%M'

2. ignore_errors=True掩盖读取错误

方案1中ignore_errors=True会忽略解析错误,导致日期字段无法转换但无任何提示。

  • 解决:先移除ignore_errors=True,运行读取代码查看错误提示,定位问题行:
    df = pl.read_csv(file, parse_dates=True)
    
    也可以指定具体列解析,避免全局解析出错:
    df = pl.read_csv(file, parse_dates=['Date_Convert'])
    

3. 字段名处理出错

你替换了列名的空格,需确认原始CSV中的日期列名替换后是否确实是Date_Convert——比如原始列名是Date Convert,替换后会变成DateConvert(无下划线),此时后续选择Date_Convert就是错误的列名。

  • 解决:先打印所有列名确认:
    print(df.columns)
    

4. 转换后未验证字段类型

方案2中with_columns会覆盖原字段,但需确认转换是否生效,可显式指定别名并查看字段类型:

df = df.with_columns(
    pl.col('Date_Convert').str.strptime(pl.Datetime, fmt='%Y/%B/%d %H:%M').alias('Date_Convert')
)
# 查看字段类型
print(df.schema)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:13:15