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

