Как добавить столбец с условиями на другой Dataframe? - PullRequest
1 голос
/ 24 февраля 2020

Мотивация: Я хочу проверить, покупали ли клиенты что-либо в течение 2 месяцев с момента первой покупки. (удержание)

Ресурсы: у меня есть 2 таблицы:

  1. Дата покупки, ID и код покупки
  2. Идентификатор и первый день, когда он купил

Пример данных:

Table1
    Date          ID    Purchase_code
 2019-01-01        1    AQT1
 2019-01-02        1    TRR1
 2019-03-01        1    QTD1

 2019-02-01        2    IGJ5
 2019-02-05        2    ILW2
 2019-02-20        2    WET2
 2019-02-28        2    POY6

Table 2
ID   First_Buy_Date
1     2019-01-01 
2     2019-02-01 

Ожидаемый результат:

ID       First_login_date      Retention    Frequency_buy_at_first_month
 1         2019-01-01              1                      2
 2         2019-02-01              0                      4

1 Ответ

2 голосов
/ 24 февраля 2020

Сначала преобразуйте столбцы в datetime, если необходимо, затем добавьте первые дни на DataFrame.merge и создайте новые столбцы, сравнив их с Series.le или Series.gt и преобразование в целые числа:

df1['Date'] = pd.to_datetime(df1['Date'])
df2['First_Buy_Date'] = pd.to_datetime(df2['First_Buy_Date'])

df = df1.merge(df2, on='ID', how='left')
df['Retention'] = (df['First_Buy_Date'].add(pd.DateOffset(months=2))
                                       .le(df['Date'])
                                       .astype(int))
df['Frequency_buy_at_first_month'] = (df['First_Buy_Date'].add(pd.DateOffset(months=1))
                                                          .gt(df['Date'])
                                                          .astype(int))

Последнее суммирование по GroupBy.agg и max (если нужно только 0 или 1 вывод) и sum для подсчета значения:

df1 = (df.groupby(['ID','First_Buy_Date'], as_index=False)
         .agg({'Retention':'max', 'Frequency_buy_at_first_month':'sum'}))
print (df1)
   ID First_Buy_Date  Retention  Frequency_buy_at_first_month
0   1     2019-01-01          1                             2
1   2     2019-02-01          0                             4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...