import pandas as pd import numpy as np import sys print "\npandas version:",pd.__version__ define function to generate 3 level multi-index based dataframes def gen_l3_mi(nchs,ndets,ntimes): "generate a 3-level multi-index dataframe" c = ['c'+str(i) for i in range(1,nchs+1)] det = ['d'+str(i) for i in range(1,ndets+1)] times = ['t'+str(i) for i in range(1,ntimes+1)] ind = [] for ch in c: for d in det: for t in times: ind.append((ch,d,t)) index = pd.MultiIndex.from_tuples(ind) return pd.DataFrame(np.random.randn(nchs*ndets*ntimes,3), columns=['A','B','C'],index=index) df = gen_l3_mi(1,2,5) df df['D']=0.0 df.D.ix['c1','d1'].ix['t3':'t5'] = 1 df grouped = df.groupby('D') for i,j in grouped: print 'D:',i print 'Actual index[2]:',j.index[0][2] print 'First element of levels[2]:',j.index.levels[2][0]