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

Pandas:筛选收听独特艺术家数量达标的用户

修正你的用户筛选代码,精准获取独特艺术家达标的用户

我看了你的需求和初始代码,发现两个关键问题需要调整,才能准确筛选出收听独特艺术家数量达到最小值的用户:

  1. 列名不匹配:你的数据里用户列是user,但代码里写的是users,这会直接导致报错;
  2. 统计逻辑错误:len(x)统计的是该用户的所有播放记录条数,而非去重后的艺术家数量,这会让筛选结果完全偏离你的目标。

下面是两种符合需求的实现方案:

方案1:先统计再筛选(直观易维护)

这种方法先单独计算每个用户的独特艺术家数量,方便你后续查看或调整阈值,再提取目标用户的全部记录:

# 第一步:计算每个用户的独特艺术家数量
user_artist_stats = full_df.groupby('user')['artist'].nunique().reset_index(name='unique_artist_count')

# 第二步:筛选出独特艺术家数≥20的用户列表
target_users = user_artist_stats[user_artist_stats['unique_artist_count'] >= 20]['user']

# 第三步:从原数据中提取这些用户的所有播放记录
eda_df = full_df[full_df['user'].isin(target_users)]

方案2:用filter方法直接筛选(简洁版)

如果你习惯用groupby.filter的写法,只需要把统计逻辑改成nunique(),同时修正列名即可:

# 修正列名,并使用nunique()统计独特艺术家数量
eda_df = full_df.groupby('user')['artist'].filter(lambda x: x.nunique() >= 20)

小提示

用你提供的样例数据测试的话,比如把阈值改成2,用户a会被保留(因为他有2个独特艺术家),完全符合你的筛选逻辑。

内容的提问来源于stack exchange,提问作者Mr. Jibz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:59:27