Итак, вот ваш pandas фрейм данных:
>>> df = pd.DataFrame(
... [
... ['Z1', 10, 11, 12, 1],
... ['Z1', 0, 12, 13, 1],
... ['Z1', 20, 13, 14, 2],
... ['Z1', 34, 14, 15, 3],
... ['Z1', 54, 52, 16, 3],
... ['Z1', 67, 53, 17, 3],
... ['Z7', 45, 54, 18, 1],
... ['Z7', 34, 55, 19, 2],
... ['Z7', 45, 56, 57, 2],
... ['Z7', 45, 56, 58, 3],
... ['Z7', 67, 67, 59, 3],
...
... ], columns=['ID', 'AA', 'BB', 'CC', 'BIN']
... )
>>>
>>>
>>> df
ID AA BB CC BIN
0 Z1 10 11 12 1
1 Z1 0 12 13 1
2 Z1 20 13 14 2
3 Z1 34 14 15 3
4 Z1 54 52 16 3
5 Z1 67 53 17 3
6 Z7 45 54 18 1
7 Z7 34 55 19 2
8 Z7 45 56 57 2
9 Z7 45 56 58 3
10 Z7 67 67 59 3
Теперь нужно сделать следующее:
# Randomly select 2 bins out of [1, 2, 3, 4, 5]
bins = random.sample(set([1, 3, 5]), 2)
final_df = df.loc[df['BIN'].isin(bins)]\
.groupby('ID')\
.agg(AA_SUM_=('AA', 'sum'), AA_MEAN_=('AA', 'mean'), BB_SUM_=('BB', 'sum'), BB_MEAN_=('BB', 'mean'), CC_SUM_=('CC', 'sum'), CC_MEAN_=('CC', 'mean'))
# Rename columns accordingly
suffix = ''.join([str(x) for x in bins])
final_df.columns = [c + suffix for c in final_df.columns]
И вывод будет:
AA_SUM_12 AA_MEAN_12 BB_SUM_12 BB_MEAN_12 CC_SUM_12 CC_MEAN_12
ID
Z1 30 10.000000 36 12 39 13.000000
Z7 124 41.333333 165 55 94 31.333333