df = df.groupby(['subject', 'Activity']).apply(lambda grp: grp.sample(n=1000)) df.reset_index(drop=True, inplace=True)