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

如何在Pandas中筛选仅含特定status_id的用户数据行?

解决方法:筛选仅拥有特定status_id的用户数据

嘿,这问题我熟!要找出那些只拥有特定status_id、完全没有其他状态的用户的所有数据行,咱们用Pandas就能轻松实现,一步步来:

原始数据

先看一下你的原始DataFrame:

user_idstatus_iddate_created
112018-02-14 11:49:07.429000-02:00
142018-02-19 12:51:43.622000-03:00
132018-02-15 09:21:23.116000-02:00
232018-02-19 12:52:08.646000-03:00
332016-08-29 11:02:39.449000-03:00
442016-08-29 11:18:31.742000-03:00
422018-02-21 10:43:45.747000-03:00
532018-02-15 09:34:57.478000-02:00
522018-02-19 11:52:16.629000-03:00

比如当目标是筛选status_id=3时,我们只需要保留user_id为2和3的行——因为这两个用户的状态里只有3,没有其他值。

代码实现

下面是完整的Pandas代码,直接就能用:

import pandas as pd

# 构造原始DataFrame(如果你的数据已经加载好,这部分可以跳过)
data = {
    'user_id': [1,1,1,2,3,4,4,5,5],
    'status_id': [1,4,3,3,3,4,2,3,2],
    'date_created': [
        '2018-02-14 11:49:07.429000-02:00',
        '2018-02-19 12:51:43.622000-03:00',
        '2018-02-15 09:21:23.116000-02:00',
        '2018-02-19 12:52:08.646000-03:00',
        '2016-08-29 11:02:39.449000-03:00',
        '2016-08-29 11:18:31.742000-03:00',
        '2018-02-21 10:43:45.747000-03:00',
        '2018-02-15 09:34:57.478000-02:00',
        '2018-02-19 11:52:16.629000-03:00'
    ]
}
df = pd.DataFrame(data)

# 定义你要筛选的目标status_id
target_status = 3

# 1. 分组计算每个用户的所有唯一status_id
user_unique_statuses = df.groupby('user_id')['status_id'].unique()

# 2. 筛选出仅包含目标status的用户ID
valid_users = user_unique_statuses[
    user_unique_statuses.apply(lambda x: len(x) == 1 and x[0] == target_status)
].index

# 3. 用符合条件的用户ID过滤原DataFrame
result_df = df[df['user_id'].isin(valid_users)]

# 查看结果
print(result_df)

运行结果

执行代码后,你会得到想要的筛选结果:

user_id  status_id                     date_created
3        2          3  2018-02-19 12:52:08.646000-03:00
4        3          3  2016-08-29 11:02:39.449000-03:00

逻辑说明

简单解释下每一步的作用:

  • 分组后,我们能得到每个用户对应的所有唯一status_id列表,比如user_id1的列表是[1,4,3],而user_id2的是[3]
  • 通过判断列表长度是否为1,且唯一元素等于目标status,就能精准找出“只有该状态”的用户
  • 最后用这些用户ID过滤原表,就拿到了这些用户的所有数据行

如果要筛选其他status_id,只要修改target_status的值就行啦!

内容的提问来源于stack exchange,提问作者Alexandre Lara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:07:16