, groupby, . .
df = pd.DataFrame({'year': [2010, 2010, 2010, 2011,2011,2011, 2012, 2012, 2013, 2013, 2014, 2014],
'username': ['b','a','a','c','c','d','e','f','g','i','h','j'],
'count': [400, 505, 678, 677, 505, 505, 677, 505, 677, 505, 677, 505]})
df = df.set_index(['year','username'])
, DataFrame .
df = df.sort_index(level=[0,1])
df
count
year username
2010 a 505
a 678
b 400
2011 c 677
c 505
d 505
2012 e 677
f 505
2013 g 677
i 505
2014 h 677
j 505
:
def head_mi(df, n1=5, n2=2):
top_lev_0 = df.index.levels[0].values[:n1]
top_lev_1 = [df.loc[ind].index.values[:n2] for ind in top_lev_0 ]
acc = []
for count0, ind0 in enumerate(top_lev_0):
acc.append(df.loc[(top_lev_0[count0], slice(top_lev_1[count0][0], top_lev_1[count0][-1])),:])
return pd.concat(acc)
head_mi(df)
:
count
year username
2010 a 505
a 678
2011 c 677
c 505
2012 e 677
f 505
2013 g 677
i 505
2014 h 677
j 505