我正在编写一些我想要通用的函数,所以我希望允许它们接受级别键(比如groupby)。因此,即使MultiIndex结构略有变化,他们也可以继续做他们的工作。
假设您获得了级别名称,您将如何切入该特定级别。我想使用xs
的参数,通过这些级别的名称进行索引,但是能够设置为生成的切片。
我想混合使用以下内容:
df.xs('a0', axis, 'lvla') = OTHER_OBJECT #except you can't set into xs
df.loc[pd.IndexSlice['a0',:,:,:],:] = OTHER_OBJECT #except you only know the level name
下面是一个可以创建大型MultiIndex的东西。 (从Pandas文档中复制并稍作修改)
def mklbl(prefix,n):
return ["%s%s" % (prefix,i) for i in range(n)]
miindex = pd.MultiIndex.from_product([mklbl('A',4),
mklbl('B',2),
mklbl('C',4),
mklbl('D',2)],
names=['lvlA', 'lvlB', 'lvlC', 'lvlD'])
micolumns = pd.MultiIndex.from_tuples([('a','foo'),('a','bar'),
('b','foo'),('b','bah')],
names=['lvl0', 'lvl1'])
dfmi = pd.DataFrame(np.arange(len(miindex)*len(micolumns)).reshape((len(miindex),len(micolumns))),
index=miindex,
columns=micolumns).sort_index().sort_index(axis=1)