层次化索引(Hierarchical Indexing)是 Pandas 中一种用于处理多维数据的重要功能。它允许在一个轴上拥有多个(两个或更多)索引级别,从而能够更灵活地表示和操作高维数据。
创建多层索引
隐式构造创建多层索引
1.通过给DataFrame构造函数的index参数传递两个或更多的数组
import numpy as np
import pandas as pd
from pandas import DataFrame, Series
columns = [['期中', '期中', '期中', '期中', '期末', '期末', '期末', '期末'], ['语文', '数学', '英语', '综合', '语文', '数学', '英语', '综合']]
index = [['一班', '一班', '一班', '一班', '一班', '二班', '二班','二班', '二班', '二班'],
['张三', '李四', '王五', '赵六', '田七', '孙八', '钱九', '陈十', '赵四', '小明']]
data = np.random.randint(0, 150, size=(10, 8))
df = DataFrame(index=index, data=data, columns=columns)
df
期中 | 期末 | ||||||||
---|---|---|---|---|---|---|---|---|---|
语文 | 数学 | 英语 | 综合 | 语文 | 数学 | 英语 | 综合 | ||
一班 | 张三 | 61 | 68 | 113 | 53 | 17 | 111 | 96 | 24 |
李四 | 19 | 63 | 138 | 75 | 66 | 87 | 78 | 124 | |
王五 | 5 | 140 | 50 | 141 | 111 | 107 | 78 | 95 | |
赵六 | 40 | 30 | 26 | 35 | 139 | 100 | 71 | 122 | |
田七 | 23 | 113 | 147 | 106 | 87 | 48 | 108 | 30 | |
二班 | 孙八 | 107 | 20 | 65 | 112 | 19 | 38 | 73 | 34 |
钱九 | 138 | 135 | 77 | 10 | 3 | 92 | 79 | 30 | |
陈十 | 24 | 9 | 110 | 95 | 103 | 49 | 19 | 108 | |
赵四 | 3 | 125 | 22 | 134 | 10 | 112 | 100 | 73 | |
小明 | 8 | 25 | 5 | 124 | 1 | 55 | 71 | 27 |
扩展:series也可以创建多层索引
# Series也可以创建多层索引
index = [['一班', '一班', '一班', '一班', '一班', '二班', '二班','二班', '二班', '二班'],
['张三', '李四', '王五', '赵六', '田七', '孙八', '钱九', '陈十', '赵四', '小明']]
data = np.random.randint(0, 150, size=(10, ))
s = Series(data=data, index=index)
s
index