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

Polars按Categorical分组后标签为空问题咨询

Polars中Categorical类型字段分组后标签显示为null的问题解决

问题重现

将DataFrame的zone字段转为Categorical类型后,按该字段分组统计,结果中zone列显示为null;但字段为字符串类型时无此问题。相关代码:

import polars as pl
scores = pl.DataFrame({
    'zone': ['North', 'North', 'South', 'South'],
    'score': [78, 39, 76, 56]
}).with_column(pl.col("zone").cast(pl.Categorical))

scores.groupby("zone").count()

原因与解决办法

这不是预期行为,属于Polars旧版本的显示bug(主要出现在0.18.x及更早版本),以下是几种解决方式:

  • 升级Polars到最新稳定版
    官方已经修复了这个Categorical类型的显示问题,执行命令升级即可:

    pip install --upgrade polars
    
  • 分组后转回字符串类型(临时 workaround)
    如果暂时无法升级版本,可以在分组后将Categorical字段转回字符串,就能正常显示标签:

    scores.groupby("zone").count().with_columns(pl.col("zone").cast(pl.Utf8))
    
  • 指定Categorical的ordered参数
    创建Categorical类型时显式设置ordered=False,部分场景下也能规避显示异常:

    scores = pl.DataFrame({
        'zone': ['North', 'North', 'South', 'South'],
        'score': [78, 39, 76, 56]
    }).with_column(pl.col("zone").cast(pl.Categorical(ordered=False)))
    

补充说明

实际上分组后的Categorical数据本身是完整的,只是终端或Notebook的渲染层出现了显示错误。你可以尝试将结果导出为CSV或查看数据的底层值,会发现标签数据并未丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:00:50