python - 使用熊猫数据框分组后的值序列条件
问题描述
我搜索了 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 组应用此条件吗?
解决方案
由于没有'signupinitiated'就不可能'signupsuccess',那么在groupby之后过滤数据帧怎么样?下面的代码将在上面给出的 df 中保留 'user_id' 2 。
df.groupby('user_id').filter(lambda x: (x['event'] == 'signupsuccess').any())
推荐阅读
- python - 我可以在某些列值上使用 pandas 数据框读取一系列行吗?
- flutter - 'file.existsSync()': 不正确
- android - Flutter - 具有无限高度错误的水平 ListView
- excel - 查找列中的最后一个值(不是最后一行)
- c# - Microsoft Edge WebView2 - 错误:命名空间“Microsoft”中不存在类型或命名空间名称“Web”
- swift - 声明仅在文件范围内有效错误 SWIFT 应用程序项目
- javascript - 鼠标移动时单击recaptcha
- animation - ffmpeg 动态缩小视频(向后挤压)或缩小到小于原始视频
- c# - 为什么C#的十进制类型是128位?
- amazon-web-services - AMI EC2 EBS 备份 - 成本预测