首页 > 解决方案 > 使用熊猫数据框分组后的值序列条件

问题描述

我搜索了 google 和 stackoverflow,以找到基于每个组和条件序列进行过滤的正确方法。找不到!我在 pandas 中有一个跟踪数据集,我想过滤那些启动注册并成功登录的用户。数据如下所示:

   user_id        event                   time
     1             signupinitiated         2019-07-14 08:36:38.004
     1             other event             2019-07-14 08:37:38.004
     2             signupinitiated         2019-07-14 06:10:40.004 
     2             signupsuccess           2019-07-14 06:10:45.004

我只想在我的最终数据框中有用户 2。我写了下面的代码,它没有考虑到 user_id 组。

 s = df.eq('signupinitiated').any(1) & df.shift(-1).eq('signupsuccess').any(1)
df_si_ss=df[s | s.shift()]

知道如何为每个 user_id 组应用此条件吗?

标签: pythonpandas

解决方案


由于没有'signupinitiated'就不可能'signupsuccess',那么在groupby之后过滤数据帧怎么样?下面的代码将在上面给出的 df 中保留 'user_id' 2 。

df.groupby('user_id').filter(lambda x: (x['event'] == 'signupsuccess').any())

推荐阅读