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

Polars map_elements推断嵌套列表列为Null类型而非Int的问题求助

Polars嵌套列表map_elements类型推断问题的解决办法

当处理包含嵌套空列表作为首个元素的序列时,使用Polars的map_elements方法即便指定了返回类型pl.List(pl.List(pl.Int64)),列仍会被推断为List[List[Null]]类型,导致非空列表里的元素被转为null。比如这段测试代码:

import polars as pl

s = pl.Series("a", [[[]], [[1, 2]]])
s.map_elements(lambda x: x, return_dtype=pl.List(pl.List(pl.Int64)))

执行后得到的结果不符合预期:

Series: 'a' [list[list[null]]]
[
    [[]]
    [[null, null]]
]

我们期望的输出是:

Series: 'a' [list[list[int64]]]
[
    [[]]
    [[1, 2]]
]

解决办法

方案1:用cast强制转换类型

先执行map_elements操作,再对结果强制转换为目标类型,绕过自动类型推断的偏差:

import polars as pl

s = pl.Series("a", [[[]], [[1, 2]]])
result = s.map_elements(lambda x: x).cast(pl.List(pl.List(pl.Int64)))
print(result)

方案2:创建序列时直接指定类型

在初始化Series阶段就明确嵌套列表的元素类型,后续的map_elements操作会直接保留正确的类型:

import polars as pl

s = pl.Series("a", [[[]], [[1, 2]]], dtype=pl.List(pl.List(pl.Int64)))
result = s.map_elements(lambda x: x)
print(result)

两种方案都能得到预期结果,优先推荐方案2,从源头固定类型可以避免后续操作出现类型偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:52:13