Python Pandas如何为DataFrame现有列添加顶层主列头
Pandas为DataFrame添加多级顶层列头实现方法
问题场景
当前已有如下单级列头的DataFrame数据集:
import pandas as pd data={'a1':[1,2,3,4,5],'a2':[4,5,6,7,8],'b1':[2,5,3,7,9],'b2':[7,5,8,9,3],'c1':[2,4,5,7,5]} df = pd.DataFrame(data) df
需要实现多级列头效果:将a1、a2归类到顶层列头A下,b1、b2归类到顶层列头B下,c1单独归类,效果如下:
实现代码
通过pandas内置的MultiIndex多级列索引即可快速实现,无需安装额外依赖:
# 定义原始列和顶层分组的对应关系 col_group_map = { 'a1': 'A', 'a2': 'A', 'b1': 'B', 'b2': 'B', 'c1': 'C' # 如果不需要给c1加顶层分组,可将'C'替换为空字符串'' } # 替换原有列头为多级索引 df.columns = pd.MultiIndex.from_tuples( [(col_group_map[col], col) for col in df.columns] )
运行后输出的df即为目标多级列头结构:
A B C a1 a2 b1 b2 c1 0 1 4 2 7 2 1 2 5 5 5 4 2 3 6 3 8 5 3 4 7 7 9 7 4 5 8 9 3 5
常用操作提示
- 筛选某一顶层分组下的所有列:直接传入顶层列名即可,例如
df['A']会返回a1、a2两列组成的单级头DataFrame - 筛选指定多级路径的单列:传入元组形式的路径,例如
df[('B', 'b2')]即可取到B组下的b2列数据
内容的提问来源于stack exchange,提问作者Win Yen Tham
相关产品推荐
相关产品推荐

