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
相关产品推荐
相关产品推荐

