层次化索引
模块导入
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
一. 层次化索引的创建
1. 隐式构造
- 多层索引在添加的时候用一个二维列表,其中列表中的每一个小列表代表一个层
加入了多层索引以后,Series的index属性变成了一个MultiIndex对象
这个对象中有两个值levels和labels
levels是一个二维列表,其中指定了每个层中索引的值
labels是一个二维列表,其中指定了levels列表中每一个索引的位置
- 创建一个实例
查看索引和列
2. 显示构造
隐式构造直接在创建的时候给index赋值为一个二维列表,显示构造是先创建一个MultiIndex对象,然后把这个对象赋值给index
- 使用数组
使用数组创建一个MultiIndex对象
把对象赋值给index
- 使用元组
使用元组创建一个MultiIndex对象
把对象赋值给index
如果在某个元组中多加了一个元素,其他索引就会用NaN补齐
- 使用product方法
使用product创建一个MultiIndex对象
把对象赋值给index
二. 多层次索引的查找与切片
无论查找还是切片,都需要一层层的由外向内
1. Series
- 查找
- 切片
外层切片
里层切片不能直接切片
比如从b切到e,需要用隐式索引,用下标的方式(前闭后开)
2. DataFrame
- 查找
多层索引,不能同时既找行又找列
以下两种方案行不通
- 切片
切外层
切l里层
使用隐式索引(前闭后开)
三. 索引堆
unstack()函数将行索引变成列索引,level参数等于哪层行索引,这个层的索引就会消失出现在列索引上
stack()函数将列索引变成行索引,level参数等于哪个层的列索引,这个层的索引就会消失出现在行索引中
1. Series
将倒数第一个行索引 ( a b c d e f ) 变为列索引,没有的元素用NaN补齐
2. DataFrame
将第0个行索引 ( a b c d ) 变为列索引
将第0个列索引 ( A B ) 变为行索引