df.groupby(['job']).apply(lambda x: (x.groupby('source') .sum() .sort_values('count', ascending=False)) .head(3))