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

如何用Pandas Groupby筛选拥有多个专辑的艺术家对应数据行

问题原因分析

你之前的代码存在两个核心错误:

  • 列名不匹配:你给出的示例DataFrame中艺术家列的列名是Artist,不是代码中使用的ArtistId,直接运行会报字段不存在的错误
  • 分组逻辑错误:你按['Artist', 'AlbumId']两个维度分组,每个分组对应的是同一个艺术家的同一张专辑的所有曲目,每个分组内AlbumId的唯一值必然为1,所以filter的判断条件永远为假,最终返回的结果不符合预期。
正确实现方法

以下是两种常用的可行实现:

方法1:groupby + filter(逻辑最直观)

仅按艺术家单维度分组,判断每个艺术家的唯一专辑数是否大于1即可:

# 基于你给出的示例df的实现代码
result = df.groupby('Artist').filter(lambda x: x['AlbumId'].nunique() > 1)

方法2:布尔索引 + isin(大数据量下性能更高)

先统计符合条件的艺术家名单,再直接筛选所有属于这些艺术家的行,避免逐组计算的开销:

# 第一步:筛选出拥有超过1张专辑的艺术家名单
qualified_artists = df.groupby('Artist')['AlbumId'].nunique()[lambda x: x>1].index
# 第二步:直接提取这些艺术家对应的所有行
result = df[df['Artist'].isin(qualified_artists)]

两种方法输出结果完全一致,针对示例数据的返回结果如下:

ArtistAlbumIdTrackId
A2011022
A2013472
A4519866
C2723411
C2728673
C6982543
C6985837

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:03