第1关:多级索引的取值与切片
import pandas as pd
from sklearn import datasets
def demo():
data = datasets.load_linnerud().data
#********** Begin **********#
df = pd.DataFrame(data, index=[['A','A','A','A','A',
'B','B','B','B','B',
'C','C','C','C','C',
'D','D','D','D','D'],
[1,2,3,4,5,
1,2,3,4,5,
1,2,3,4,5,
1,2,3,4,5]],
columns=[['stage', 'stage', 'stage'], ['a', 'b', 'c']])
data = df.T.stack()
print(data.loc[pd.IndexSlice[:, :, 2], :])
#*********** End ***********#
第2关:多级索引的数据转换与累计方法
import pandas as pd
from sklearn import datasets
def demo1():
data = datasets.load_linnerud().data
# ********** Begin **********#
df = pd.DataFrame(data, index=[['A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B',
'C', 'C', 'C', 'C', 'C',
'D', 'D', 'D', 'D', 'D'],
[1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5,
1, 2, 3, 4, 5]
],
columns=[['stage', 'stage', 'stage'], ['a', 'b', 'c']])
df.index.names = ['name','project']
df = df.swaplevel('name','project').sort_index(0)
df = df.loc[pd.IndexSlice[:, ('A','C','D')],:]
print(df.mean(level='name'))
# ********** End **********#