如何用Pandas构建多层级列名(MultiIndex)实现指定列分组?
解决方案
要实现这种多层级列名的效果,核心是给DataFrame设置**MultiIndex(多级索引)**类型的列名,不需要用到merge或concat方法。具体步骤如下:
- 定义符合需求的多级列索引结构,对应目标的层级关系
- 将原DataFrame的列名替换为这个多级索引
完整代码示例
import pandas as pd data = { "a": [420, 380, 390], "b": [50, 40, 45], "c": [30, 22, 11], "d": [323, 2, 33] } df = pd.DataFrame(data) # 构造目标多级列索引 new_columns = pd.MultiIndex.from_tuples([ ('a', ''), # 第一列:一级名a,二级名空 ('d', 'b'), # 第二列:一级名d,二级名b ('d', 'c'), # 第三列:一级名d,二级名c ('d', 'd'), # 第四列:一级名d,二级名d ]) # 替换原列名 df.columns = new_columns print(df)
执行结果
a d b c d 0 420 50 30 323 1 380 40 22 2 2 390 45 11 33
原理说明:通过from_tuples方法创建多级列索引,每个元组代表一列的层级名称(第一个元素是一级列名,第二个是二级列名)。原DataFrame的列顺序刚好和目标列的对应关系匹配,直接替换列名即可实现需求。
内容的提问来源于stack exchange,提问作者Abdeljalil ouzz
相关产品推荐
相关产品推荐

