熊猫数据框的特定聚合

时间:2019-05-20 15:43:09

标签: python pandas pandas-groupby

我有一个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列表)。希望有人可以帮助我进行此汇总。

1 个答案:

答案 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