a = df.values[:, (b_c_idx_locs)]
df['B+C'] = a.sum(1)
df['B*C'] = a.prod(1)
df['B-C'] = -np.diff(a)
cols = ['B+C', 'B*C', 'B-C']
df.groupby(['A', 'S'])[cols].agg(['sum', 'size'])
Would it be possible to create multiple dataframes in one go?