You need to enable JavaScript to run this app. pandas如何将双层MultiIndex第一层转成行索引、第二层转成列索引
优惠活动
大模型
产品
解决方案
定价
更多

pandas如何将双层MultiIndex第一层转成行索引、第二层转成列索引

解决方案

你要实现的多层索引转置需求,直接用pandas内置的unstack()方法就能搞定,不需要手动遍历构造数据,写法非常简洁而且完全通用,不限制第二层索引的类型。

完整精简实现代码如下:

import pandas as pd
from random import choice

products=['car', 'pen', 'kitchen', 'bed']
df=pd.DataFrame([{'product': choice(products), 'Changing': choice([True, False])} for _ in range(10000)])

# 一行完成分组计数+索引重塑,自动将第一层行索引留为行、第二层行索引转为列
result = df.groupby(['product', 'Changing']).size().unstack(fill_value=0)
# 可选:修改列名匹配你需要的输出效果
result = result.rename(columns={False: 'not changing', True: 'changing'})
print(result)

方法说明

  • unstack()是pandas专门用于多层行索引转列索引的内置方法,默认对最内层的行索引做转换,刚好适配你这里两层索引的场景;如果你有更多层索引,可以通过level参数指定要转为列的索引层。
  • 加入fill_value=0参数可以自动将缺失的分组计数填充为0,避免出现空值,鲁棒性更强。
  • 该方法完全不限制第二层索引的取值类型,布尔值、字符串、数值都可以直接使用,不需要提前预设索引的取值范围,通用性拉满。

内容的提问来源于stack exchange,提问作者jan-seins

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 15:06:04