为每个唯一客户按日期将数据分为不同的组

时间:2019-09-19 13:30:31

标签: python pandas

我有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。感谢所有帮助。

1 个答案:

答案 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 时运行。

相关问题