层级索引:
index=[('a',2010),('b',2011),('c',2010'),('a',2012),('e',2010),('f',2011)]
age=[18,17,18,16,18,17]
常规创建
pop =pd.Series(age,index=index)
MultiIndex创建
index= pd.MultiIndex.from_tuples(index)
pop = pop.reindex(index) 最原先的索引重置为multiindex
pop[:,2010] 取出2010的所有数据
高维数据的多级索引:
pop_df = pop.unstack()
本质是生成一个a-f为行索引,年份为列索引的矩阵,缺失值用nan
pop = pop_df.stack() 和unstack相反
多级索引创建:
直接将index参数设为二维
df = pd.DataFrame(np.random.rand(4,2),
index=[['a','a','c','d'],[1,2,1,1]],
columns=['data1','data2'])
将元祖作为键的字典传入
data = {('a',1):18,('a',2):19,('b',1):20}
pd.Series(data)
显式创建多级索引
pd.MultiIndex.from_arrays([['a','a','b','b'],[1,2,1,2]])
pd.MultiIndex.from_tuples([('a',1),('a',2),('b',1),('b',2)])
多级索引等级名称
pop.index.names=['name','year'] 以前面例子来说给name是a一列的名称,year是2010一列的形成
Series多级索引
获取单个元素:
pop['a',2010]
也可以支持局部取值
pop['a']
局部切片
pop['a':'c'] 但要求muliIndex按顺序排列
pop[:,2012]
pop[pop>18]
pop[['a','b']]
0