You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从DataFrame中筛选所有活动均为view类型的用户

解决Pandas用户活动过滤问题

核心逻辑

先判定单条活动是否属于View类(默认以View为前缀判定,可根据实际规则调整),再按用户分组校验该用户的全部活动都符合View类要求,最后保留符合条件的用户的所有数据行。

代码实现

首先构造示例DataFrame:

import pandas as pd

data = {
    "Name": ["John", "John", "John", "Ted", "Ted", "Amanda", "Amanda", "Lee", "Kathy"],
    "Activity": ["ViewReport", "UploadData", "ViewDashboard", "ViewReport", "DownloadData", "ViewReport", "ViewDashboard", "ViewDashboard", "ViewDataset"]
}
df = pd.DataFrame(data)

方法1:单步transform高效过滤

适合数据量较大的场景,不用拆分两次查询:

# 标记每条记录是否为View类活动
is_view_activity = df["Activity"].str.startswith("View")
# 按用户分组,仅保留全活动都是View类的用户
filter_mask = df.groupby("Name")[is_view_activity].transform("all")
result = df[filter_mask]

方法2:先查合法用户再过滤

逻辑更直观,适合小数据量场景:

# 筛选出所有符合要求的用户名
valid_users = df.groupby("Name").filter(
    lambda user_group: user_group["Activity"].str.startswith("View").all()
)["Name"].unique()
# 从原表过滤出对应用户的所有记录
result = df[df["Name"].isin(valid_users)]

输出结果

两种方法得到的结果完全一致:

Name       Activity
5  Amanda     ViewReport
6  Amanda  ViewDashboard
7     Lee  ViewDashboard
8   Kathy    ViewDataset

内容的提问来源于stack exchange,提问作者Alice Wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 02:54:02