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

将分类列转换为多计数列:解决Pandas多级索引问题

解决Pandas分类计数列扩展及多级索引问题

一、处理现有多级索引的方案

你当前生成的pivoted数据存在两层列索引(顶层为count,底层是分类名称),可以通过以下步骤清理:

  1. 移除列的顶层索引:
# 去掉列的顶层"count"索引
pivoted.columns = pivoted.columns.droplevel(0)
  1. 将person_id从索引转为普通列,同时把NaN填充为0(计数场景下0更符合逻辑):
final_result = pivoted.reset_index().fillna(0).astype({'bad': int, 'new': int, 'ok': int})

处理后结果如下:

person_idbadnewok
person_a020
person_b101
person_c110

二、更简洁的一步到位实现方法

不需要先分组统计再转置,直接用Pandas内置函数就能完成需求:

方法1:使用pivot_table

指定行、列、聚合规则,一步生成目标格式:

final_result = df.pivot_table(
    index='person_id',
    columns='categorical_data',
    aggfunc='size',  # 统计每组的行数(即频次)
    fill_value=0
).reset_index()

方法2:使用pd.crosstab

这是专门用于交叉计数的函数,代码更简洁:

final_result = pd.crosstab(df['person_id'], df['categorical_data']).reset_index()

这两种方法都会直接生成无多级索引的结果,且自动把缺失的计数填充为0,省去后续索引清理步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:07:13