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

如何替换已弃用的get_duplicates()升级Pandas重复ID筛选代码?

解决Pandas中get_duplicates()弃用后的重复ID筛选问题

我来帮你理清这个问题!警告里的idx其实就是你提取的那层ID索引——也就是my_data.index.get_level_values('ID')。咱们一步步把代码改对,实现你要的「选中所有重复ID对应行」的目标:

方法一:按警告提示的思路修改

先提取ID级别的索引,再找出所有重复的ID值,最后筛选对应行:

# 提取ID层的索引对象
id_idx = my_data.index.get_level_values('ID')
# 找出所有重复的ID(去重后)
duplicate_ids = id_idx[id_idx.duplicated()].unique()
# 筛选所有包含重复ID的行
duplicates = my_data.loc[id_idx.isin(duplicate_ids)]

方法二:更简洁的直接筛选(推荐)

如果你的目标是直接获取所有重复ID对应的行,可以跳过“提取唯一重复ID”这一步,直接用duplicated(keep=False)标记所有重复的行(包括第一次出现的重复项):

# 标记所有ID重复的行(True表示该行的ID存在重复)
is_duplicate = my_data.index.get_level_values('ID').duplicated(keep=False)
# 直接筛选出这些行
duplicates = my_data[is_duplicate]

为什么你之前的尝试没成功?

你用pd.Index(my_data)是错误的——这个操作会把DataFrame的列名转换成索引对象,而不是你想要的行索引里的ID层。正确的做法是直接从my_data.index中提取ID级别的索引,也就是my_data.index.get_level_values('ID')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:22:01