在python数据帧中发生事件后计算购买次数

时间:2018-06-04 15:31:23

标签: python pandas dataframe pandas-groupby

在下面的数据框中,我想计算每件产品促销完成后的购买数量。所以对于香蕉来说,促销活动是在1-5-2018完成的,我想收到它之后的购买总数(8次)。我如何在python中有效地做到这一点?

     Date product  Purchase  Promo
0  01-01-2018  banana         1      0
1  01-02-2018   apple         2      0
2  01-03-2018   apple         3      0
3  01-04-2018  banana         4      0
4  01-05-2018  banana         1      1
5  01-06-2018  banana         3      0
6  01-07-2018   apple         1      0
7  01-08-2018  banana         4      0
8  01-09-2018  banana         1      0

1 个答案:

答案 0 :(得分:3)

您可以使用cummax设置条件在促销等于1后计算,然后使用mask消除促销本身:

df.groupby('product')\
  .apply(lambda x: x.loc[x['Promo'].cummax().mask(x['Promo']==1,0) == 1,
                         'Purchase'].sum())

输出:

product
apple     0
banana    8
dtype: int64