Создать словарь, показывающий, как агрегировать каждый столбец.
dd = {k:'mean' for k in df.filter(regex='^Flow.*').columns.tolist()}
for i in df.filter(like='Relia'):
dd[i] = 'sum'
dd
Выход:
{'Flow A': 'mean',
'Flow B': 'mean',
'Flow C': 'mean',
'Flow D': 'mean',
'Flow E': 'mean',
'Reliabilty Score Flow A': 'sum',
'Reliabilty Score Flow B': 'sum',
'Reliabilty Score Flow C': 'sum',
'Reliabilty Score Flow D': 'sum',
'Reliabilty Score Flow E': 'sum'}
Затем используйте groupby
с agg
и словарем, дд:
df.groupby('ID').agg(dd).reindex(df.columns[1:], axis=1)