У меня есть датафрейм - df, как показано ниже:
df = pd.DataFrame({"Customer_no": ['1', '1', '1', '2', '2', '6', '7','8','9','10'],
"Card_no": ['111', '222', '333', '444', '555', '666', '777','888','999','000'],
"Card_name":['AAA','AAA','BBB','CCC','AAA','DDD','EEE','BBB','CCC','CCC'],
"Group_code":['123','123','456','678','123','434','678','365','678','987'],
"Amount":['100','240','450','212','432','123','543','567','232','453'],
"Category" :['Electrical','Electrical','Hardware','House','Electrical','Car','House','Toy','House','Bike123']})
Теперь мне нужно сгруппировать по номеру клиента и получить общую сумму, лучшие 1,2,3 категории и их процент от общей суммы.ПРИМЕЧАНИЕ: в моем наборе данных Toy у меня есть только 2 категории, в моих исходных данных у меня есть больше, мне нужно выбрать 5 лучших категорий.Мой Dataframe должен выглядеть следующим образом:
df = pd.DataFrame({"Customer_no": ['1', '1', '1', '2', '2', '6', '7','8','9','10'],
"Card_no": ['111', '222', '333', '444', '555', '666', '777','888','999','000'],
"Card_name":['AAA','AAA','BBB','CCC','AAA','DDD','EEE','BBB','CCC','CCC'],
"Group_code":['123','123','456','678','123','434','678','365','678','987'],
"Amount":['100','240','450','212','432','123','543','567','232','453'],
"Category" :['Electrical','Electrical','Hardware','House','Electrical','Car','House','Toy','House','Bike123'],
"Total amount" :['790','790','790','644','644','123','543','567','232','453'],
"Top-1 Category":['Hardware','Hardware','Hardware','Electrical','Electrical','Car','House','Toy',
'House','Bike123'],
"Top-1 Category %":['57','57','57','67','67','100','100','100','100','100'],
"Top-2 Category":['Electrical','Electrical','Electrical','House','House','','','','',''] ,
"Top-2 Category %":['43','43','43','33','33','0','0','0','0','0']})
Запросить вашу помощь для достижения этого.
ПРИМЕЧАНИЕ: 1) Высшая категория выбирается путем группировки всех категорий по каждому клиенту и суммирования суммыдля каждой категории клиентов.К какой категории больше всего относится ее категория «Топ-1», аналогичным образом, следующая категория - «Топ-2» и т. Д. 2) Процент категории «Топ-1». Это общая сумма каждой категории, разделенная на общую сумму и умноженная на 100. Это для каждого клиента.Аналогично для категории Top 2.