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

Polars 0.18.3混合数据类型序列创建异常问题咨询

Polars 混合类型序列出现 null 的原因分析

当你创建包含字符串与整数混合类型的Polars Series时,Polars会自动推断一个统一的序列类型——这里它选择了str(字符串)类型,因为序列中存在字符串元素。但整数2无法被隐式转换为字符串,Polars默认会将这类转换失败的值替换为null,而非直接抛出错误,这就是你看到第二个值为null的原因。

验证与区分方法

  • 确认类型转换问题:启用Polars的严格类型检查模式,此时转换失败会直接抛出错误,明确问题根源:

    import polars as pl
    pl.Config.set_strict(True)
    x = pl.Series(["1", 2, "3"])
    

    执行后会抛出TypeError: cannot cast integer type 'i64' to 'str',直接说明是类型转换失败导致的null,而非原始缺失值。

  • 避免转换失败生成null:如果希望整数被转为字符串而非变成null,可以提前统一元素类型:

    # 方式1:创建时统一转换为字符串
    x = pl.Series([str(item) for item in ["1", 2, "3"]])
    # 输出:
    # shape: (3,)
    # Series: '' [str]
    # [
    #  "1"
    #  "2"
    #  "3"
    # ]
    
    # 方式2:显式指定类型并允许非严格转换
    x = pl.Series(["1", 2, "3"]).cast(pl.Utf8, strict=False)
    

综上,你当前输出中的null是类型转换失败的结果,并非原始数据里的缺失值。通过严格模式或显式类型处理,可以清晰区分这两种情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:15:03