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

Pandas技术实现:筛选拥有两种及以上唯一偏好的用户ID并保留对应数据

解决方法:筛选拥有多种唯一偏好的用户

我来帮你搞定这个问题!其实用pandas的groupby配合筛选就能轻松实现需求,咱们一步步来:

步骤分解

  • 第一步:统计每个用户的唯一偏好数量
    用groupby按userId分组,然后对preference列统计唯一值的数量,这样就能知道每个用户有多少种不同的偏好。
  • 第二步:筛选符合条件的用户ID
    从第一步的结果里,找出唯一偏好数量≥2的用户ID。
  • 第三步:过滤原DataFrame
    用筛选出来的用户ID,去原DataFrame里保留对应的行。

完整代码示例

首先构造初始DataFrame:

import pandas as pd

# 你的初始数据
df = pd.DataFrame({
    'userId': [1, 2, 2, 3, 3, 3, 4, 4],
    'preference': ['coffee', 'cake', 'tea', 'tea', 'tea', 'tea', 'apple', 'tea']
})

然后执行筛选逻辑:

# 1. 统计每个用户的唯一偏好数
user_pref_count = df.groupby('userId')['preference'].nunique()

# 2. 获取有效用户ID(唯一偏好数≥2)
valid_user_ids = user_pref_count[user_pref_count >= 2].index

# 3. 过滤原DataFrame得到结果
result_df = df[df['userId'].isin(valid_user_ids)]

# 查看结果
print(result_df)

运行后输出的结果就是你想要的:

userId preference
1       2        cake
2       2         tea
6       4       apple
7       4         tea

简化版代码

如果想更简洁,也可以把步骤合并成一行:

result_df = df[df['userId'].isin(df.groupby('userId')['preference'].nunique().loc[lambda x: x >=2].index)]

这样就完美实现了剔除只有一种唯一偏好的用户,保留拥有两种及以上偏好的用户数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:39:08