Datawhale开源内容: https://datawhalechina.github.io/joyful-pandas/build/html/%E7%9B%AE%E5%BD%95/ch3.html#id2
3.2.3 多级索引中的loc索引器
在多级索引中的元组,有一种特殊的用法,可以将多层的元素进行交叉组合后索引,但同时需要指定loc的列,全选为 :。其中,每一层需要选中的元素用列表存放,传入loc的形式为[(level_0_list, level_1_list),cols]。
例子:
- 取出所有北大和复旦的大二大三学生。
res = df_multi.loc[(['Peking University', 'Fudan University'], ['Sophomore', 'Junior']),:]
res
- 取出北大的大三学生和复旦的大二学生:
错误写法:【错误原因是这种写法还是指的交叉组合索引,即(Peking,Fudan), (Peking, Sophomore), (Junior, Fudan), (Junior, Sophomore)。那么当然只有 (Peking, Sophomore)能选出结果来啦】
stu1 = df_multi.loc[('Peking University', 'Junior'), ('Fudan University', 'Sophomore'),:]
stu1
正确写法:
stu = df_multi.loc[[('Peking University', 'Junior'), ('Fudan University', 'Sophomore')]]
stu
3.2.3 IndexSlice 对象
np.random.seed(0)
L1, L2 = ['A','B','C'],['a','b','c']
mul_index1 = pd.MultiIndex.from_product([L1, L2], names=('Upper', 'Lower'))
L3, L4 = ['D','E','F'],['d','e','f']
mul_index2 = pd.MultiIndex.from_product([L3,L4], names=('Big','Small'))</