Создание столбца в кадре данных на основе нескольких условий на основе значений из разных столбцов.
Цель состоит в том, чтобы получить указание на то, когда первое интересное действие было совершено покупателем, это будет представлено 1 под t0.
Dataframe структурирован следующим образом:
cust_id first_act prod_1 prod_2 t0
0 1 1 1
22 2
23 2 1
24 2 1
25 2
26 3 1
27 3
28 3
29 4
30 4
Я хочу присвоить значение столбцу t0 на основе следующих условий:
если у клиента есть 1 под prod_1: присвойте значение 1 t0 в индексе, где он имеет 1 под prod_1.
если у клиента нет 1 в prod_1, проверьте, есть ли у клиента 1 в prod_2, и если true, присвойте t0 значение 1 по индексу, где условие истинно.
наконец: если у клиента нет prod_1 или prod_2, но есть 1 в first_act, присвойте значение 1 индексу, где первое действие истинно, в t0.
После этих условий должно быть только одно значение в t0 для каждого клиента.
Ожидаемый результат для cust_id 2:
cust_id first_act prod_1 prod_2 t0
0 1 1 1
22 2 1
23 2 1
24 2 1 1
25 2
26 3 1
27 3
28 3
29 4
30 4
Я попытался сделать это с помощью вложенных операторов np.where, но это не сработало следующим образом:
df['t0'] = np.where(df['prod_1'] == 1, 1 ,
np.where(df['prod_2'] == 1, 1,
np.where(df['first_act'] == 1, 1, 0)))
Добавляет 1 к t0 в нескольких местах.
Обновлять
@Jeffyx Я не знаю, проясняет ли это немного, но я подумал об этом:
if prod_1 == 1:
t0 = 1 at index of prod_1 == 1
if not prod_1 == 1:
if prod_2 == 1:
t0 = 1 at index of prod_2 == 1
if not prod_1 == 1 and not prod_2 == 1:
if first_act == 1:
t0 = 1 at index of first_act == 1