如何建立多重索引
import pandas as PD
df = PD.DataFrame()
df['a'] = list(range(10,30,2))
df['b'] = df['a'] // 10
df.index.name = 'id'
#drop : boolean, default True Delete columns to be used as the new index
df = df.set_index([df['b'], df.index], drop=False)
至此建立了一个带二重索引的dataframe
对带多重索引的dataframe取值一般使用xs
xs可以传入多个不同级别的索引进行筛选,但不支持同一级索引多选
并且xs返回的是数值而不是引用
xs is only for getting, not setting values. MultiIndex Slicers is a
generic way to get/set values on any level or levels it is a superset
of xs functionality, see MultiIndex Slicers
df.xs(1, level='b')
#选取第一级b=2,id=6
df.xs((2,6))
使用PD.IndexSlice可以更花式的作死
这里因为使用的是loc,所以返回的是引用,可以修改原值
IndexSlice中,每一级的index都要有对应的取值,全取则用”:”
#idx['b','id']
idx = PD.IndexSlice
df.loc[idx[:,[1,3,8]],'a']