我有一个分组数据框,如下所示,它总结了男性和女性客户购买的产品数量:
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
我想比较产品类别组中男性和女性子组的值,得到女性值更大的行或组
您可以尝试
unstack
按性别创建一列,然后使用where
捕捉女性多于男性的情况。它没有给出确切的输出类型,但是您可以得到信息或者,如果您想要数据帧,您可以用
to_frame()
替换tolist()
并获得相关问题 更多 >
编程相关推荐