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

Pandas按出现次数分组筛选:移除总出现1次且Observation为1的用户

实现方法

你需要过滤的是在分组统计结果中仅对应1条记录、且该记录的Observation值为1的用户,可直接在你现有分组统计代码的基础上补充如下逻辑:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'User': ["alex", "alex", "ravi", "dodo", "dodo", "dodo", "cokie","dodo","nemo","ravi"],
    'Id': ['a', 'b', 'b', 'a', 'b', 'b', 'c','a','e','b']
})

# 你原有的分组统计代码
df_group = df.groupby(['User', 'Id']).size().reset_index(name='Observation')

# 新增过滤逻辑
# 计算每个用户在分组结果中的总条目数
user_entry_cnt = df_group.groupby('User')['User'].transform('count')
# 排除同时满足「用户仅1条分组条目、Observation值为1」的行
filtered_df = df_group[~((user_entry_cnt == 1) & (df_group['Observation'] == 1))]

print(filtered_df)

运行后输出的结果和你预期的完全一致:

User Id  Observation
0  alex  a            1
1  alex  b            1
3  dodo  a            2
4  dodo  b            2
6  ravi  b            2

逻辑说明

  • 用groupby('User')['User'].transform('count')给每行数据标记对应用户在分组统计结果中的总条目数,alex对应的标记值为2、ravi对应的标记值为1、cokie对应的标记值为1
  • 过滤规则是仅剔除同时满足「用户总条目数=1」和「Observation=1」的行,刚好排除掉cokie、nemo两类不需要的用户,其余所有用户都会保留

内容的提问来源于stack exchange,提问作者Trishala Suryavanshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:04