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

