MultiIndex多层索引
MultiIndex,即具有多个层次的索引,有些类似于根据索引进行分组的形式。通过多层次索引,我们就可以使用高层次的索引,来操作整个索引组的数据。通过给索引分类分组,则可以操作组数据。
1.创建方式
1.1.第一种:多维数组
我们在创建Series或DataFrame时,可以通过给index(columns)参数传递多维数组,进而构建多维索引。
【数组中每个维度对应位置的元素,组成每个索引值】
多维索引也可以设置名称(names),属性的值为一维数组,元素的个数需要与索引的层数相同(每层索引都需要具有一个名称)。
1.2.第二种:MultiIndex
我们可以通过MultiIndex类的相关方法,预先创建一个MultiIndex对象,然后作为Series与DataFrame中的index(或columns)参数值。同时,可以通过names参数指定多层索引的名称。
from_arrays:接收一个多维数组参数,高维指定高层索引,低维指定底层索引。
from_tuples:接收一个元组的列表,每个元组指定每个索引(高维索引,低维索引)。
from_product:接收一个可迭代对象的列表,根据多个可迭代对象元素的笛卡尔积进行创建索引。
from_product相对于前两个方法而言,实现相对简单,但是,也存在局限。
1.3.创建案例:
import numpy as np
import pandas as pdimport warnings
warnings.filterwarnings('ignore')
#通过给index(columns)参数传递多维数组,进而构建多维索引
# 多层索引,指定一个多维数组。多维数组中,逐级给出每层索引的值。
s = pd.Series([1, 2, 3, 4], index=[["A", "A", "B", "B"], ["a", "b", "c", "d"]])
# 多于多层索引,每一层都具有一个名字。
s.index.names = ["index1", "index2"]
display(s)
display(s.loc["A"].loc["a"])
df=pd.DataFrame(np.arange(9).reshape(3, 3), columns=[["X", "X", "Y"], ["x1", 'x2', 'y1']],index=[["A", "B", "B"], ["a", 'a', 'b