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

Polars指定数据类型无效:出生日期列仍为字符串类型原因

问题解析:Polars指定Schema后日期列仍为字符串类型的原因

更新说明:当前Polars已修复此问题,出生日期列会按预期转为date类型。

原因分析

  • Polars通过Python字典创建DataFrame时,会优先采用输入数据的原生类型,不会自动执行类型转换。你传入的Date of Birth列是Python字符串列表,Polars会直接保留该类型,忽略Schema中指定的pl.Date。
  • Schema参数的核心作用是校验数据类型是否匹配,而非主动转换。旧版本中,若输入类型与Schema指定类型不兼容,Polars不会自动转换,而是保留原类型;部分新版本会直接抛出类型不匹配的错误。

解决方案

有两种可靠方式将字符串列转为日期类型:

  1. 创建DataFrame时通过pl.Series显式指定类型
import polars as pl

data = {
    'Age': [28, 32, 24, 45, 29],
    'Date of Birth': ['1995-03-15', '1989-08-22', '1999-11-05', '1978-02-10', '1994-06-07'],
    'City': ['New York', 'San Francisco', 'London', 'Tokyo', 'Sydney'],
}

df_listing_data = pl.DataFrame({
    'Age': pl.Series(data['Age'], dtype=pl.Int64),
    'Date of Birth': pl.Series(data['Date of Birth'], dtype=pl.Date),
    'City': pl.Series(data['City'], dtype=pl.String)
})
  1. 创建后通过with_columns转换类型
import polars as pl

data = {
    'Age': [28, 32, 24, 45, 29],
    'Date of Birth': ['1995-03-15', '1989-08-22', '1999-11-05', '1978-02-10', '1994-06-07'],
    'City': ['New York', 'San Francisco', 'London', 'Tokyo', 'Sydney'],
}

df_listing_data = pl.DataFrame(data).with_columns(
    pl.col('Date of Birth').str.to_date()
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:07:20