我有100,000个客户的客户旅程。从客户入职到离开程序或不活动的时间,客户旅程将绘制出客户在我们程序中的每一次互动。
customer_id| event_name | event_date
1 | entered |2019-07
1 | purchase = 2|2019-07
1 | purchase = 2|2019-07
1 |went_inactive|2019-02
2 | entered |2019-07
2 | purchase = 0|2019-07
2 | purchase = 2|2019-07
3 | went_inactive|2018-08
我正在尝试根据日期将数据分为测试和训练
我想创建一个拆分数据的函数,以便有一组在2019年1月活跃的客户。数据的范围是2010年到当前时间。 X组中的人员是在2019年1月31日之后具有非活动数据的客户以及没有非活动日期的客户。然后,对于X组中的所有客户,我想创建一个在2019年2月停用的患者子集。
我不知道如何在每次独特的客户旅程中进行过滤,仅在规定的日期带人。
目标是创建一个功能,该功能可以查看100,000位患者的客户旅程,然后将数据分为几组。 因此X会有1 + 2的客户,而没有3。感谢所有帮助。
答案 0 :(得分:0)
从为去过的客户计算 customer_id 的集合开始 在 2019-01 或更早版本中无效:
inact = set(df.query('event_name == "went_inactive" and event_date <= "2019-01"')\
.customer_id)
您的样本数据为{3}
。
然后将结果计算为:
act = list(set(df.customer_id).difference(inact))
结果仅为[1, 2]
。
或者仅仅是 set(...)就足够了吗?稍后您可能会想要 检索活跃客户的行,执行:
df.query('customer_id in @act')
它将在 act 是 list 或 set 时运行。