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

如何提取DataFrame中SongId重复的所有行?

提取DataFrame中所有包含重复SongId的行

嘿,我懂你的困扰!你之前用的dfB[dfB.SongId.duplicated()]之所以效果不理想,是因为这个方法默认只标记第一次出现之后的重复项为True——也就是说,它只会返回重复组里除了第一行之外的其他行,而你想要的是所有包含重复SongId的行(包括第一次出现的那行)。

针对这个需求,有两种简单有效的方法:

方法一:使用duplicated(keep=False)

duplicated()方法的keep参数默认是'first',如果把它改成False,所有重复的行(不管是第一次还是后续出现的)都会被标记为True,直接筛选就能得到所有目标行:

dfB[dfB.SongId.duplicated(keep=False)]

这个方法最简洁,用它处理你的示例DataFrame,就能把SongId为0、10、16的所有行都提取出来。

方法二:先获取重复的SongId集合,再筛选

如果你想更清晰地拆解逻辑,可以先找出所有存在重复的SongId值,再筛选出包含这些值的所有行:

# 第一步:获取所有重复的SongId(去重后)
duplicate_ids = dfB.SongId[dfB.SongId.duplicated()].unique()
# 第二步:筛选出SongId在重复集合中的所有行
dfB[dfB.SongId.isin(duplicate_ids)]

这个方法的结果和方法一完全一致,只是逻辑拆分得更明确,适合需要中间处理重复ID的场景。

这两种方法都能完美解决你的问题,快试试吧!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:00:50