gpt4 book ai didi

python - 比较 Pandas 数据框中一组子组的值

转载 作者:行者123 更新时间:2023-12-04 04:09:27 24 4
gpt4 key购买 nike

我有一个如下所示的分组数据框,它总结了编号。男性和女性顾客购买的产品:

                          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 来捕捉 Female 多于 Male 的情况。它不提供确切的输出类型,但您会得到信息。

print (df['Qty'].unstack().where(lambda x: x.F>=x.M).dropna().index.tolist())
['Bags', 'Footwear']

或者如果你想要数据帧,你可以用 to_frame() 替换 tolist() 并得到

          prod_cat
prod_cat
Bags Bags
Footwear Footwear

关于python - 比较 Pandas 数据框中一组子组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62009114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com