import pandas as pd
import numpy as np
# 1、层级索引
s1 = pd.Series(np.random.randn(12),index=[['a','a','a','b','b','b','c','c','c','d','d','d'],[0,1,2,0,1,2,0,1,2,0,1,2]])
print(s1)
print(type(s1.index)) #<class 'pandas.core.indexes.multi.MultiIndex'>
print(s1.index)
'''
MultiIndex([('a', 0),
('a', 1),
('a', 2),
('b', 0),
('b', 1),
('b', 2),
('c', 0),
('c', 1),
('c', 2),
('d', 0),
('d', 1),
('d', 2)],
)
'''
# 2、选取
# 外层选取
print(s1['b'])
#内层选取
print(s1[:,2])
#具体某个值
print(s1['a',0])
#3、交换
# 3.1 swaplevel() 交换内层和外层索引
# print(s1.swaplevel())
'''
0 a -0.059948
1 a 1.676417
2 a 0.645701
0 b -1.296001
1 b -0.356783
2 b 1.740027
0 c 1.166927
1 c 1.351469
2 c -0.693756
0 d 0.552620
1 d 0.557757
2 d 0.721529
dtype: float64
'''
# 3.2 sortlevel() 先对外层索引进行排序,再对内层索引进行排序 最后交换
print(s1.sortlevel()) #现在已经不用了,没有了 会报错
# 3.3 交换并排序分层
print(s1.swaplevel().sort_values())
'''
1 c -1.419539
0 d -0.837428
2 c -0.818162
1 b -0.413601
2 b -0.410248
a -0.342093
0 a -0.277028
1 a -0.060458
0 b 0.011740
c 0.048183
1 d 0.631287
2 d 1.391267
dtype: float64
'''