本节主要涉及一下三个方面:层次化索引、数据合并、重塑和轴向旋转
2.1层次化索引:
在某个方向(行 / 列)上拥有两个及以上索引级别,也叫多层索引。
作用:能以较低维度形式处理高维度数据、可按层次筛选数据、是数据重塑和分组操作(如透视表)中的重要工具
支持层级索引的对象:
- Series 的层级索引
- DataFrame 的层级索引
2.1.1Series索引案例:
import numpy as np import pandas as pd
data=pd.Series(np.random.randn(9),index=[['a','a','a','b','b','c','c','d','d'],[1,2,3,1,3,1,2,2,3]]) print(data)print(data.index)

#利用层次化索引获取数据 print(data['b'])

#利用切片获取数据,前面是第一层索引,后面是第二层索引 print(data[:,1])

#使用loc方法 print(data.loc['a':'c',1:2])

2.1.2DataFrame层次索引案例:
每一条轴上添加层次索引,各层都有自己的名字
# 生成4行3列随机数的DataFrame
df = pd.DataFrame(np.random.randn(12).reshape(4, 3),
index=[['a', 'b', 'c', 'd'], [1, 2, 1, 2]], # 行索引
columns=[['A', 'A', 'B'],[ 1, 2, 3]]) # 列索引
print(df)

# 生成4×4随机数的临时DataFrame,行和列均为多层索引,from_product显示构造
temp_df = pd.DataFrame(np.random.random(16).reshape(4, 4),
pd.MultiIndex.from_product([['a', 'b'], [1, 2]]), # 行多层索引
columns=pd.MultiIndex.from_product([['A', 'B'], [1, 2]])) # 列多层索引
print(temp_df)

#索引、列名赋值
df.index.names = ['k1', 'k2'] # 给行索引层级命名
df.columns.names = ['n1', 'n2'] # 给列索引层级命名
print(df)

重排(交换层级):重新调整某轴上各级别的顺序
DataFrame.swaplevel(i=-, j=-, axis=0)返回交换层级后的新对象,不改变原数据
#重排
print(df.swaplevel('k1', 'k2'))

分级排序功能:根据指定级别上的值对数据进行排序 DataFrame.sort_index(level=0, axis=0, ascending=True, inplace=False, sort_remaining=True)按字典顺序在指定level的内容排序,相同标签内部进行排序
#重排级别 + 分级排序 先交换层级,再按指定级别排序
print(df.swaplevel('k1', 'k2').sort_index(level=0))


print(data.index)
426

被折叠的 条评论
为什么被折叠?



