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

在Polars中转换字符串为DateTime时遇到问题,请求协助

Polars字符串列转DateTime列的正确实现

问题根源

你的代码存在两个关键错误:

  1. 赋值方式错误:Polars数据框是不可变对象,不能通过df['col'].with_columns = ...的方式修改数据,必须将with_columns的返回值重新赋值给变量(如原df)。
  2. 日期格式不匹配:输入字符串00000001011970的结构是时分秒日月年(前6位为000000即HHMMSS,接下来01是日、01是月,最后1970是年),但你指定的格式%Y-%m-%d %H:%M:%S和输入结构完全不符,导致转换失效。

正确代码实现

import polars as pl

df = pl.from_repr("""
┌────────────────┐
│ col            │
│ ---            │
│ str            │
╞════════════════╡
│ 00000001011970 │
│ 00000001011970 │
│ 00000001011970 │
└────────────────┘
""")

# 转换字符串列为DateTime列,保留原列并新增解析后的列
df = df.with_columns(
    pl.col('col').str.to_datetime(format='%H%M%S%d%m%Y').alias('parsed_EventTime')
)

print(df)

执行后输出结果:

┌────────────────┬─────────────────────┐
│ col            │ parsed_EventTime    │
│ ---            │ ---                 │
│ str            │ datetime[μs]        │
╞════════════════╪═════════════════════╡
│ 00000001011970 │ 1970-01-01 00:00:00 │
│ 00000001011970 │ 1970-01-01 00:00:00 │
│ 00000001011970 │ 1970-01-01 00:00:00 │
└────────────────┴─────────────────────┘

补充说明

  • 如果不需要保留原col列,可以用select直接生成新数据框:
    df = df.select(
        pl.col('col').str.to_datetime(format='%H%M%S%d%m%Y').alias('parsed_EventTime')
    )
    
  • 若不确定日期格式,可尝试让Polars自动推断(但指定格式更高效准确):
    df = df.with_columns(
        pl.col('col').str.to_datetime(infer_datetime_format=True).alias('parsed_EventTime')
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:30:45