python/pandas dataframe中multiindex的操作

如何建立多重索引

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
python/pandas dataframe中multiindex的操作_第1张图片

对带多重索引的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')

python/pandas dataframe中multiindex的操作_第2张图片

#选取第一级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']

python/pandas dataframe中multiindex的操作_第3张图片

你可能感兴趣的:(pandas,pandas)