Использовать GroupBy.agg
с кортежами для указания агрегатной функции с именами новых столбцов:
df = (df1.groupby(['Col1','Col2','Col3'])['Col4']
.agg([('Count','size'), ('Col4_sum','sum')])
.reset_index())
print (df)
Col1 Col2 Col3 Count Col4_sum
0 A 1 AA 2 15
1 A 2 AB 1 30
2 B 4 FF 1 10
3 C 1 HH 1 4
4 C 3 GG 2 13
5 D 1 AA 1 4
6 D 3 FF 1 6
В пандах 0.25+ возможно использование named aggregation
:
df = (df1.groupby(['Col1','Col2','Col3'])
.agg(Count=('Col5', 'size'), Col4_sum=('Col4', 'sum'))
.reset_index())
print (df)
Col1 Col2 Col3 Count Col4_sum
0 A 1 AA 2 15
1 A 2 AB 1 30
2 B 4 FF 1 10
3 C 1 HH 1 4
4 C 3 GG 2 13
5 D 1 AA 1 4
6 D 3 FF 1 6