当前位置:首页>python>Python:Pandas 多级索引拆解与重组 + 分层数据提取

Python:Pandas 多级索引拆解与重组 + 分层数据提取

  • 2026-10-11 13:48:02
Python:Pandas 多级索引拆解与重组 + 分层数据提取
分组、透视后生成多级索引结构,常规方式难以筛选与导出,拆解重组实现灵活数据提取与格式标准化。
场景:地区+品类双层索引数据表,按层级筛选数据、拆分索引为独立字段、重新编排结构。核心知识点:swaplevel索引层级互换、unstack/stack行列转换、多级索引条件筛选、索引扁平化。

① 生成测试数据

import pandas as pdimport numpy as np# 构造多级索引原始数据raw = pd.DataFrame({    "region": np.random.choice(["华东","华北","华南"], 120),    "category": np.random.choice(["数码","家居","美妆"], 120),    "sales": np.random.randint(200, 5000, 120),    "profit": np.random.randint(50, 1200, 120)})# 生成分组多级索引表multi_df = raw.groupby(["region", "category"]).agg({"sales":"sum", "profit":"mean"})multi_df.to_excel("multi_index.xlsx")print("多级索引测试数据生成完成")

查看表格数据

② 核心代码

import pandas as pd# region 合并单元格了# 1. 先读取全部数据,不指定索引df = pd.read_excel("multi_index.xlsx")# 2. 填充Excel合并单元格带来的空值(向下补全区域名称)df["region"] = df["region"].ffill()# 3. 手动设置多级索引df = df.set_index(["region", "category"])# 1. 索引层级互换df_swap = df.swaplevel("region", "category")# 2. 多级索引扁平化,转为普通列df_flat = df.reset_index()# 3. 按上层索引筛选数据filter_data = df_flat[df_flat["region"] == "华东"]print("扁平化后完整数据:")print(df_flat.head(6))print("\n华东区域数据:")print(filter_data)
输出结果

总结

多级索引是复杂多维分析的产物,熟练拆解与重组,可解决层级数据筛选、导出、对接下游系统的各类问题,是进阶数据分析必备技能。

最新文章

随机文章