Подсчитать покупки после наступления события в датафрейме python - PullRequest
0 голосов
/ 04 июня 2018

В приведенном ниже кадре данных я хочу подсчитать количество покупок после проведения промо для каждого продукта.Таким образом, для банана, акция проводится 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 голосов
/ 04 июня 2018

Вы можете использовать, с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...