Если исходные данные выглядят так:
df=pd.DataFrame({'cust_id':[479485,479485,479485,472848],
'date':['20190120','20180320','20180321','20191020'],
'sales_amount':[500,200,200,100],
'product_type':['bags','clothes','clothes','clothes']})
Я бы сделал что-то вроде этого:
df.groupby(['cust_id','product_type'])['sales_amount'].count()
Группировка по годам, конечно, возможна. Есть несколько вариантов, но вам нужно обратиться к библиотеке datetime, чтобы преобразовать столбец date в объект datetime, а затем поработать над этим.