基于基于不同列的值的多个条件在数据帧中创建列。你知道吗
我们的目标是得到一个迹象,当第一个有趣的行动是一个客户,这将代表一个1下t0。你知道吗
数据帧的结构如下:
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下有1:在产品1下有1的索引处给t0赋值1。你知道吗
如果客户在产品1下没有1,请检查客户在产品2下是否有1,如果为真,则在条件为真的索引处为t0赋值1。你知道吗
最后:如果客户没有prod\u 1或prod\u 2,但在first\u act下有1,则在t0下,将值1赋给first act为真的索引。你知道吗
在这些条件之后,每个客户的t0中应该只有一个值。你知道吗
客户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.哪里但不起作用的声明如下:
df['t0'] = np.where(df['prod_1'] == 1, 1 ,
np.where(df['prod_2'] == 1, 1,
np.where(df['first_act'] == 1, 1, 0)))
在多个位置向t0添加1。你知道吗
更新
@杰弗里克斯 我不知道这是否能让事情明朗一点,但我想到的是:
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
必须找到与条件匹配的第一个索引,然后使用该索引在
t0
列中设置一个值。你知道吗使用groupby,它提供:
相关问题 更多 >
编程相关推荐