由MultIIndex级别名称索引

时间:2017-06-21 16:20:30

标签: python python-3.x pandas multi-index

我正在编写一些我想要通用的函数,所以我希望允许它们接受级别键(比如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)

0 个答案:

没有答案