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

Polars将字符串列表转分类列表报错,是否支持该数据类型?

Polars中列表嵌套分类类型的支持与问题解决

Polars支持列表嵌套分类类型(list[Categorical]),你遇到的报错主要由两个问题导致:

  • 列名不匹配:你的DataFrame定义的目标列是b,但代码中错误使用了pl.col('tags'),Polars找不到对应列引发异常
  • 部分旧版本Polars对直接cast转换列表内元素为分类类型的支持存在问题,需要用更稳妥的方式处理

正确实现代码

以下两种方式均可将列表内的字符串转换为分类类型:

方式1:使用list.eval逐个转换元素

import polars as pl

df = pl.DataFrame({'a':[1,2,3], 'b':[['a','b'],['a'],['c','d']]})

# 转换列表内每个元素为Categorical,生成新列
df = df.with_columns(
    pl.col('b').list.eval(pl.element().cast(pl.Categorical)).alias('b_categorical')
)

方式2:直接cast为List(Categorical)(适用于较新版本Polars)

确保列名正确,直接转换整个列表列的类型:

import polars as pl

df = pl.DataFrame({'a':[1,2,3], 'b':[['a','b'],['a'],['c','d']]})

df = df.with_columns(
    pl.col('b').cast(pl.List(pl.Categorical)).alias('b_categorical')
)

验证类型

执行print(df.schema)可查看列类型,b_categorical会显示为List(Categorical),说明转换成功。

如果仍出现报错,建议升级Polars到最新稳定版本,早期版本对嵌套分类类型的支持存在局限性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:15:32