下面创建一个Series, 在输入索引Index时,输入了由两个子list组成的list,
第一个子list是外层索引,第二个list是内层索引。
示例代码:
import pandas as pd
import numpy as np
ser_obj = 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(ser_obj)
运行结果:
a 0 0.099174
1 -0.310414
2 -0.558047
b 0 1.742445
1 1.152924
2 -0.725332
c 0 -0.150638
1 0.251660
2 0.063387
d 0 1.080605
1 0.567547
2 -0.154148
dtype: float64
MultiIndex索引对象
示例代码:
print(type(ser_obj.index))
print(ser_obj.index)
运行结果:
<class 'pandas.indexes.multi.MultiIndex'>
MultiIndex(levels=[['a', 'b', 'c', 'd'], [0, 1, 2]],
labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])
选取子集
ser_obj['outer_label']
示例代码:
# 外层选取
print(ser_obj['c'])
运行结果:
0 -1.362096
1 1.558091
2 -0.452313
dtype: float64
ser_obj[:, 'inner_label']
示例代码:
# 内层选取
print(ser_obj[:, 2])
运行结果:
a 0.826662
b 0.015426
c -0.452313
d -0.051063
dtype: float64
交换分层顺序
.swaplevel( )交换内层与外层索引。
示例代码:
print(ser_obj.swaplevel())
运行结果:
0 a 0.099174
1 a -0.310414
2 a -0.558047
0 b 1.742445
1 b 1.152924
2 b -0.725332
0 c -0.150638
1 c 0.251660
2 c 0.063387
0 d 1.080605
1 d 0.567547
2 d -0.154148
dtype: float64
交换并排序分层
.sort_index() 先对外层索引进行排序,再对内层索引进行排序,默认是升序。
示例代码:
# 交换并排序分层
print(ser_obj.swaplevel().sort_index())
运行结果:
0 a 0.099174
b 1.742445
c -0.150638
d 1.080605
1 a -0.310414
b 1.152924
c 0.251660
d 0.567547
2 a -0.558047
b -0.725332
c 0.063387
d -0.154148
dtype: float64
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。