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

如何筛选DataFrame中Value列存在重复值的所有行?

解决Pandas筛选Value列重复值行的问题

嗨,很高兴看到你开始探索Pandas啦!我明白你想把Value列里所有存在重复值的行都筛选出来,之前用groupby和.duplicated没得到预期结果,大概率是参数设置的问题,我来给你捋清楚。

首先先还原一下你的输入DataFrame(方便你直接复现测试):

import pandas as pd

data = {
    'Name': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'],
    'ID': ['NSW', 'NSW', 'VIC', 'NSW', 'VIC', 'NSW', 'VIC', 'NSW', 'VIC'],
    'Date': ['19/05/2018']*9,
    'Value': [290, 340, 340, 70, 130, 175, 260, 350, 350]
}
df = pd.DataFrame(data)

正确的筛选方法

你需要用duplicated()方法,关键是设置两个参数:

  • subset='Value':指定只基于Value列判断重复
  • keep=False:把所有重复的行都标记为True(默认keep='first'只会标记除第一个重复行之外的其他行,这就是你之前可能没得到完整结果的原因)

直接一步到位筛选的代码:

# 筛选出所有Value列重复的行
result = df[df.duplicated(subset='Value', keep=False)]
print(result)

运行后就能得到你想要的预期输出:

Name   ID        Date  Value
1    b  NSW  19/05/2018    340
2    c  VIC  19/05/2018    340
7    h  NSW  19/05/2018    350
8    i  VIC  19/05/2018    350

如果想先标记再筛选(方便查看哪些是重复行),也可以这样写:

# 添加标记列
df['Duplicate'] = df.duplicated(subset='Value', keep=False)
# 筛选出标记为True的行
result = df[df['Duplicate']]

这样就能完美得到你想要的结果啦,要是还有其他Pandas的小问题,随时来问~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:35:14