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

如何将带Multiindex多层索引的DataFrame拆分为多个独立DataFrame?

多层索引DataFrame拆分实现方案

测试数据构建

对应测试数据的构建代码如下:

import pandas as pd

data = {
       'File':[1,1,2,2,3],
       'Sheet':['Sheet 1','Sheet 1','Sheet 3','Sheet3','Sheet5'],
       'Duration':[2,5,3,7,9],
       'Cost':[7,5,8,9,3],
       'Distance':[2,4,5,7,5]
}
df = pd.DataFrame(data)
df.columns = [['Set X','Set X','Set Y','Set Y','Set Z'],['File','Sheet','Duration','Cost','Distance']]

构建完成的DataFrame为两层列索引结构,顶层为Set X/Set Y/Set Z三个分组,二级索引为具体字段名。

拆分代码实现

直接按列索引的顶层(level=0)做轴向分组即可拆分出独立子表,代码如下:

# 存储拆分后DataFrame的字典
result = {}

# axis=1指定按列维度分组,level=0指定按顶层列索引值分组
for group_label, sub_df in df.groupby(level=0, axis=1):
    # 若需要子表仅保留二级列名(和预期展示效果一致)保留下面这行;需要保留多层索引可直接删除
    sub_df.columns = sub_df.columns.droplevel(0)
    result[group_label] = sub_df

# 提取三个独立DataFrame
set_x_df = result['Set X']  # 包含File、Sheet两列数据
set_y_df = result['Set Y']  # 包含Duration、Cost两列数据
set_z_df = result['Set Z']  # 包含Distance列数据

补充说明

  • 该方法不需要硬编码列名,后续如果顶层分组有增减,代码也可以自动适配
  • 拆分后的子表会保留原表的行索引,不需要额外做数据对齐操作

内容的提问来源于stack exchange,提问作者Win Yen Tham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:36:39