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

将Polars的pl.Object列转为pl.String时触发ComputeError问题

问题原因

你遇到的ComputeError是因为numpy生成的数组中,None以Python原生NoneType的形式存在,而Polars在默认严格模式(strict=True)下,不允许将NoneType直接转换为String类型——Polars的字符串列仅支持字符串值和Polars原生Null,不兼容Python原生None。

解决方案

两种无需删除缺失值的处理方式:

方式1:转换时关闭严格模式

在cast方法中设置strict=False,Polars会自动将Python的None转为Polars Null,同时完成字符串类型转换:

import numpy as np
import polars as pl

rng = np.random.default_rng(12345)
df = pl.LazyFrame(
    data={
        "date": rng.choice(
            [None, "03.04.1998", "03.05.1834", "05.06.2025"], 100
        ),
    }
)
# 关键参数:strict=False
df.with_columns(pl.col("date").cast(pl.String, strict=False)).collect()

方式2:创建Series时指定字符串类型

用Polars的Series包装数据并指定dtype=pl.String,numpy中的None会被直接解析为Polars Null,后续无需额外转换:

import numpy as np
import polars as pl

rng = np.random.default_rng(12345)
df = pl.LazyFrame(
    data={
        "date": pl.Series(
            values=rng.choice([None, "03.04.1998", "03.05.1834", "05.06.2025"], 100),
            dtype=pl.String
        ),
    }
)
# 此时date列已为String类型,直接收集结果即可
df.collect()

内容的提问来源于stack exchange,提问作者Björn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:07:22