如何在数据帧上应用带模式的布尔过滤器?

2024-04-20 12:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据框:

    userId  eventType
       1    action
       1    action
       1    inactive
       1    action
       1    inactive
       1    action
       1    action
       1    action
       2    action
       2    inactive
       2    inactive
       2    action
       ....  ....

我的目标是从用户中筛选UserID,用户拥有最多的“action”条目,但至少有一个非活动条目!伪代码:

find user: max useractions & atleast one time inactive

有没有一个聪明的方法来处理数据帧…上面的数据帧包含超过10000个入口。我可以在一个循环中完成,对每个用户进行迭代,在一个临时变量中找到他的事件类型,评估这个变量,然后总是更新达到最佳目标的用户

但是有更好的方法吗?我真的很感激你的帮助!我很难从我的数据框中获得有条件的信息! 约翰,在此谨致谢意


Tags: 数据方法代码用户目标条目actionfind
1条回答
网友
1楼 · 发布于 2024-04-20 12:22:37

您可以使用掩码筛选至少具有一个'inactive'userId,然后在计算'active'值时筛选数据帧中的这些userId

mask = df['eventType'] == 'inactive'
inactives = df.loc[mask, 'userId'].unique()

res = df.loc[df['userId'].isin(inactives) & ~mask, 'userId'].value_counts().index[0]  # 1

注意pd.Series.value_counts首先返回按最高计数排序的序列,以userId作为索引。因此,您可以简单地获取其index的第一个值

相关问题 更多 >