У меня есть сгруппированный фрейм данных, как показано ниже, в котором суммируется номер. продуктов, приобретенных покупателями-мужчинами и женщинами:
Qty
prod_cat Gender
Bags F 2362
M 2346
Books F 7070
M 7587
Clothing F 3425
M 3748
Electronics F 5832
M 6476
Footwear F 3716
M 3555
Home and kitchen F 4895
M 5041
Я хочу получать те продукты, которые были более популярны среди клиентов-женщин, чем у мужчин. Таким образом, ожидаемый результат будет следующим:
prod_cat
0 Bags
4 Footwear
Я пробовал следующий способ, который работает, но ищу лучшее и более простое решение.
temp =temp.reset_index()
...: prod_f = temp[temp["Gender"] =="F"].sort_index().drop(columns="Gender").reset_index(drop=True)
...: prod_m = temp[temp["Gender"] =="M"].sort_index().drop(columns="Gender").reset_index(drop =True)
...:
...: display(prod_f,prod_m)
...:
...: f_popular = prod_f[["prod_cat"]].where(prod_f["Qty"]>prod_m["Qty"])
...: f_popular = f_popular.loc[~f_popular.prod_cat.isnull(),]
...: f_popular
вывод
prod_cat Qty
0 Bags 2362
1 Books 7070
2 Clothing 3425
3 Electronics 5832
4 Footwear 3716
5 Home and kitchen 4895
prod_cat Qty
0 Bags 2346
1 Books 7587
2 Clothing 3748
3 Electronics 6476
4 Footwear 3555
5 Home and kitchen 5041
prod_cat
0 Bags
4 Footwear
Я хочу сравнить значения мужских и женских подгрупп в группе категорий продуктов и получить строки или группу, в которых женское значение больше.