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

如何解决Polars中`min`操作不支持null dtype的错误

Polars中对含单个null的列表列执行min操作报错的解决方法

问题描述

我有一个仅含一行的Polars DataFrame,其中的列表列仅包含一个null值。当尝试对该列表执行min操作时,触发错误:

polars.exceptions.InvalidOperationError: min operation not supported for dtype null

最小可复现示例(MRE)

import polars as pl

data = pl.DataFrame({"list_col": [[None]]}, schema={"list_col": pl.List})
print(data)
col = "list_col"
data.with_columns(pl.col(col).list.min().alias(col + "_min"))

输出:

shape: (1, 1)
┌────────────┐
│ list_col   │
│ ---        │
│ list[null] │
╞════════════╡
│ [null]     │
└────────────┘

已尝试方法

  • 使用条件判断pl.when():
data.with_columns(
                pl.when(pl.col(col).is_not_null()).then(pl.col(col).list.min()).alias(col + "_min")).collect()
  • 先去除列表null值再判断:
data.with_columns(
                pl.when(pl.col(col).list.drop_nulls().is_not_null()).then(pl.col(col).list.min()).alias(col + "_min")).collect()

解决方案

问题根源在于该列表列的内部数据类型是pl.List(pl.Null),这类类型不支持min操作。只需将其转换为合适的数值类型(如pl.List(pl.Float64))即可解决:

# 转换数据类型
data = data.with_columns(pl.col(col).cast(pl.List(pl.Float64)))
data
# 正常执行min操作
data.with_columns(pl.col(col).list.min().alias(col + "_min"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:52:16