# when used with groupby, transform is faster than filter # use transform instead of filter e.g. df = df[(df.groupby('col1')['col2'].transform('sum')>=200) & (df.groupby('col1')['col3'].transform('nunique')>=20)]