У меня есть таблица продаж с историей покупок клиентов. Я хочу создать новый фрейм данных, сгруппированный по клиенту. Фрейм данных должен также включать столбец со словарем value_counts всех продуктов, которые покупатель приобрел, и счетчиком количества каждого продукта.
Я сделал следующее:
categories = data.groupby(by=['CustomerID']).Description.value_counts().to_frame().rename(columns={'Description':'Counts'}).reset_index(level='Description')
, который производит это:
Description Counts
CustomerID
3004000304 MAJOR APPLIANCES 3
3004000304 HOME OFFICE 2
3004000304 ACCESSORIES 1
3004002756 MAJOR APPLIANCES 1
3004002946 HOME OFFICE 2
3004002946 ACCESSORIES 1
3004002946 MAJOR APPLIANCES 1
Я пытался увидеть, могу ли я исправить вышеупомянутый фрейм данных следующим образом:
categories['Merged'] = categories.apply(lambda x: {x['Description']:x['Counts']}, axis=1)
, который дает мне это:
Description Counts Merged
CustomerID
3004000304 MAJOR APPLIANCES 3 {'MAJOR APPLIANCES': 3}
3004000304 HOME OFFICE 2 {'HOME OFFICE': 2}
3004000304 ACCESSORIES 1 {'ACCESSORIES': 1}
3004002756 MAJOR APPLIANCES 1 {'MAJOR APPLIANCES': 1}
3004002946 HOME OFFICE 2 {'HOME OFFICE': 2}
3004002946 ACCESSORIES 1 {'ACCESSORIES': 1}
3004002946 MAJOR APPLIANCES 1 {'MAJOR APPLIANCES': 1}
но я хочу это:
Counts
CustomerID
3004000304 {'MAJOR APPLIANCES': 3, 'HOME OFFICE': 2, 'ACCESSORIES': 1}
3004002756 {'MAJOR APPLIANCES': 1}
3004002946 {'HOME OFFICE': 2, 'ACCESSORIES': 1, 'MAJOR APPLIANCES': 1}
Некоторая помощь в создании вышеуказанного кадра данных будет принята с благодарностью