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

Pandas用groupby+unstack生成表后新增列报Categorical分类缺失错误如何解决

报错原因

你执行赋值操作时报错的核心原因是df_sub的列是CategoricalIndex类型,这类索引仅允许操作预先定义的分类值(当前只有Customer、Subscriber两个合法值),新增的列名ratio不在分类列表中,因此触发类型校验错误。

解决方案

方案1:转换为普通字符串列索引(最常用,无需保留分类特性时推荐)

直接将分类索引转为普通字符串索引,后续新增列不受限制:

df_sub = df.groupby(['time_section', 'day_type', 'user_type']).size().unstack()
# 转换列索引为字符串类型
df_sub.columns = df_sub.columns.astype(str)
df_sub['ratio'] = df_sub['Subscriber'] / df_sub['Customer']

方案2:保留CategoricalIndex特性(需要继续使用分类索引功能时使用)

先给分类索引新增ratio分类,再执行赋值操作:

df_sub = df.groupby(['time_section', 'day_type', 'user_type']).size().unstack()
# 给分类列索引新增ratio合法值
df_sub.columns = df_sub.columns.add_categories('ratio')
df_sub['ratio'] = df_sub['Subscriber'] / df_sub['Customer']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:21:01