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
相关产品推荐
相关产品推荐

