已实现Pandas多列表头,如何添加多行(多级)行索引?
Pandas多级行索引实现方案
你已经通过pandas.MultiIndex.from_tuples成功实现了多级列索引,要实现多级行索引,核心思路是直接给DataFrame的index参数传入构建好的多级索引对象,不需要通过转置表头的方式操作。
具体实现代码
import pandas as pd # 原有的多级列索引定义 headers = [ ('data1', 'value1'), ('data1', 'value2'), ('data2', 'value1'), ('data2', 'value2'), ('data3', 'value1'), ('data3', 'value2'), ('data4', 'value1'), ('data4', 'value2'), ] # 原数据 data = [ (1, 2, 3, 4, 5, 6, 7, 8), (11, 12, 13, 14, 15, 16, 17, 18), ] # 定义多级行索引的元组列表,对应预期的行层级结构 row_indexes = [ ('groupA', 'row1'), ('groupB', 'row2') ] # 创建DataFrame时同时指定多级列索引和多级行索引 df = pd.DataFrame( data, columns=pd.MultiIndex.from_tuples(headers), index=pd.MultiIndex.from_tuples(row_indexes) ) print(df)
拓展:给多级行索引命名
如果需要给行的每一层级添加名称,可使用from_arrays方法让结构更清晰:
# 定义行的层级数据和对应名称 row_levels = [ ['groupA', 'groupB'], # 第一级行索引 ['row1', 'row2'] # 第二级行索引 ] row_index = pd.MultiIndex.from_arrays( row_levels, names=['Group', 'SubRow'] # 给每个层级命名 ) # 重新创建带命名的多级行索引DataFrame df = pd.DataFrame( data, columns=pd.MultiIndex.from_tuples(headers), index=row_index )
这样就能得到你预期的多级行索引效果,直接通过index参数指定多级索引即可,无需转置操作。
内容的提问来源于stack exchange,提问作者po100lit
相关产品推荐
相关产品推荐

