1. 创建多层列索引
1) 隐式构造
最常见的方法是给DataFrame构造函数的index或者columns参数传递两个或更多的数组
qizhong qizhong qimo qimo chinese math chinese math tom 100 90 80 70
jay 100 90 80 70
2) 显示构造pd.MultiIndex.from_
- 使用数组
- 使用product:
最简单,推荐使用
In [1]:
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
In [2]:
col=pd.MultiIndex.from_product([['qizhong','qimo'],
['chinese','math']])
In [3]:
#创建DF对象
df = DataFrame(data=np.random.randint(60,120,size=(2,4)),index=['tom','jay'],
columns=col)
df
Out[3]:
tom | 108 | 80 | 61 | 72 |
---|---|---|---|---|
jay | 83 | 104 | 110 | 74 |
In [5]:
df['qimo']
Out[5]:
tom | 61 | 72 |
---|---|---|
jay | 110 | 74 |
2. 多层行索引
除了列索引,行索引也能用上述同样的方法创建多层行索引
3. 多层索引对象的索引与切片操作
1)DataFrame的操作
注意在对行索引的时候,若一级行索引还有多个,对二级行索引会遇到问题!也就是说,无法直接对二级索引进行索引,必须让二级索引变成一级索引后才能对其进行索引!
切片操作
In [4]:
#获取张三李四期中的php和c++成绩
In [5]:
#获取张三李四所有的成绩
In [16]:
# 总结:
# 访问一列或多列 直接用中括号[columnname] [[columname1,columnname2...]]
#访问一行或多行 .loc[indexname]
# 访问某一个元素 .loc[indexname,columnname] 获取李四期中的php成绩
# 行切片 .loc[index1:index2] 获取张三李四的期中成绩
# 列切片 .loc[:,column1:column2] 获取张三李四期中的php和c++成绩
5. 聚合操作
所谓的聚合操作:平均数,方差,最大值,最小值……