我有一个Pandas DataFrame,其中包含“ weight”,“ price”和“ id”等列。我的用户正在购买多个具有不同ID的商品。我想要统计整个用户的购物篮/订单,例如总重量和总价格。 确切地说,我有一个DataFrame df,以及ID如下所示的购物篮列表:
df.head()
price id weight
1 4.0 1 257.90125
2 4.0 2 87.52515
3 6.0 3 142.69750
4 6.0 4 444.77600
59 4.0 59 0.00000
baskets_list
[(587, 25, 11, 186, 587, 587),
(587, 25, 12, 186, 587, 587),
(587, 25, 13, 186, 587, 587),
(587, 25, 14, 186, 587, 587),
(587, 25, 15, 186, 587, 587),
(587, 25, 16, 186, 587, 587),
(587, 25, 17, 186, 587, 587)
]
我想通过此购物篮列表汇总此数据框(在购物篮中,我具有商品ID列表)。希望有人可以帮助我进行此汇总。
答案 0 :(得分:0)
使用dict理解来执行每个聚合,并以.loc
为子集:
baskets_list = [(1,2,3), (1,2,4), (1,4,59), (1,3,59), (3,4,59)]
d = {ids: df.loc[df.id.isin(ids), ['price', 'weight']].sum() for ids in baskets_list}
现在您拥有所有信息:
d[(1,2,3)]
#price 14.0000
#weight 488.1239
#dtype: float64
d[(1,3,59)]
#price 14.00000
#weight 400.59875
#dtype: float64