如何基于数组与OrderedDict为Pandas创建多级列索引
实现方案
核心逻辑是基于现有两个变量生成等长的level0列名序列,和已有的level1列名组合为多级索引即可,全程不会修改原有的col_names和col_layout_dict变量,不影响其他代码逻辑。
完整代码示例
import pandas as pd from collections import OrderedDict # ------------ 以下是你已有的变量声明,仅做示例 ------------ # 原始DataFrame df = pd.DataFrame( [["val1", "val2", "val3", "val4", "val5", "val6"]], columns=["col1", "col2", "col3", "col4", "col5", "col6"] ) # level1列名数组 col_names = ['id', 'a', 'b', 'a', 'b', 'c'] # level0列结构字典 col_layout_dict = OrderedDict([('ID', 1), ('A', 2), ('B', 2), ('C', 1)]) # ------------------------------------------------------- # 1. 生成与列数等长的level0列名列表 level0_cols = [] for level0_name, sub_col_count in col_layout_dict.items(): level0_cols.extend([level0_name] * sub_col_count) # 2. 构造双层多级列索引,赋值给DataFrame df.columns = pd.MultiIndex.from_arrays( arrays=[level0_cols, col_names], names=["level0", "level1"] # 可根据需要修改层级名,不需要可以删掉这个参数 )
效果验证
执行后打印df即可看到你需要的双层列结构:
| ID | A | B | C |
|---|---|---|---|
| id | a | b | a |
| val1 | val2 | val3 | val4 |
内容的提问来源于stack exchange,提问作者Ankur
相关产品推荐
相关产品推荐

