К сожалению, ответ jezrael не сработает, если у вас более 1 клиента, и он не даст вам имя клиента в качестве индекса (как в выходных данных вашего примера).
Попробуйте следующее:
df1 = df.pivot(index='CLIENT', columns='Period', values='SUM')
df_agg = df.groupby('CLIENT').agg({'LASTDATE': 'last', 'SUM': 'sum'})
df_fin = pd.concat([df1, df_agg], axis=1)
В первой строке вы изменяете фрейм данных, но теряете значение LASTDATE, которое вы возвращаете во второй строке (вместе с общей суммой для каждого клиента), а затем объединяете фреймы данных в последней строке.
Для расширенного воображаемого фрейма данных:
Period LASTDATE PRICE VAT SUM CLIENT
0 2018Q1 31/3/2018 1 2 3 NAME1
1 2018Q2 30/6/2018 2 2 4 NAME1
2 2018Q3 30/9/2018 3 3 6 NAME1
3 2018Q4 31/12/2018 4 4 8 NAME1
4 2018Q1 31/3/2018 2 2 1 NAME2
5 2018Q2 30/6/2018 4 2 2 NAME2
6 2018Q3 30/9/2018 6 3 3 NAME2
7 2018Q4 31/12/2018 8 4 4 NAME2
вы должны получить следующее:
2018Q1 2018Q2 2018Q3 2018Q4 LASTDATE SUM
CLIENT
NAME1 3 4 6 8 31/12/2018 21
NAME2 1 2 3 4 31/12/2018 10
Проверено на пандах 0.24.1.