pandas中层次化索引与切片
Pandas层次化索引
1. 创建多层索引
隐式索引:
常见的方式是给dataframe构造函数的index参数传递两个或是多个数组
Series也可以创建多层索引
Series多层索引
B =Series(np.random.randint(0,150,size=10),index=pd.MultiIndex.from_product([list("ABCDE"),["期中","期末"]]))
B
Dataframe多层索引的创建(推荐使用)
多层行索引
A = DataFrame(np.random.randint(0,150,size=(10,3)),columns=["数学","语文","英语"],
index=pd.MultiIndex.from_product([list("ABCDE"),["期中","期末"]]))
A
对象方式多行列索引
B= DataFrame(np.random.randint(0,150,size=(3,20)),index=["数学","语文","英语"],columns=pd.MultiIndex.from_product([list("ABCDE"),["期中","期末"],["上","下"]]))
B
元祖方式创建多层索引
A = DataFrame(np.random.randint(0,150,size=(4,3)),columns=["数学","语文","英语"],
index=pd.MultiIndex.from_tuples([("A","期中"),("A","期末"),("B","期中"),("B","期末")]))
A
数组方式创建多层索引
多层索引的对象的索引和切片
Datafrane多层索引
行索引:
A.loc["A","期中"]
B.loc["A","期中","上"]
列索引:
B["A","期中","上"]
Series多层索引’
行切片以下两种都适用
D["A","期中"]
D.loc["A","期中"]
多层索引的切片
注:对于多层索引的切片必须排好顺序,才能进行切片,使用sort_index()函数对索引进行排序(单层索引可以切片可以不考虑索引的顺序)。
对行进行切片
A.loc["A":"C"]
A.iloc[1:3]
对列进行切片同行切片一样,使用显性索引和隐形索引对数据第二维进行切片
对数据进行排序是,使用sort_values()对数据进行排序
如:A.sort_values(by=["数学"]) #对按数学成绩进行排序