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

如何在Python分组中识别DataFrame的重复行?

解决方案

你可以通过 Pandas 的 groupby 结合 transform 和 duplicated 方法快速实现需求,以下是两种常见场景的代码实现:

场景1:标记组内所有重复的行(包括首次出现的重复项)

这种方式会把同一ID 1分组内,所有重复的ID 2行都标记为True。

示例代码

import pandas as pd

# 构造示例输入DataFrame
df = pd.DataFrame({
    'ID 1': ['A', 'A', 'A', 'B', 'B', 'B'],
    'ID 2': [100, 100, 200, 300, 400, 300]
})

# 新增标记列
df['is_duplicate'] = df.groupby('ID 1')['ID 2'].transform(lambda x: x.duplicated(keep=False))

输出结果

ID 1ID 2is_duplicate
A100True
A100True
A200False
B300True
B400False
B300True

场景2:仅标记组内非首次出现的重复行

这种方式会保留每个ID 2的首次出现,仅将后续重复的行标记为True。

示例代码

import pandas as pd

df = pd.DataFrame({
    'ID 1': ['A', 'A', 'A', 'B', 'B', 'B'],
    'ID 2': [100, 100, 200, 300, 400, 300]
})

# 新增标记列(默认keep='first',可省略)
df['is_duplicate'] = df.groupby('ID 1')['ID 2'].transform('duplicated')

输出结果

ID 1ID 2is_duplicate
A100False
A100True
A200False
B300False
B400False
B300True

自定义标记文本(可选)

如果需要用字符串替代布尔值标记,可通过map转换:

df['is_duplicate'] = df.groupby('ID 1')['ID 2'].transform(lambda x: x.duplicated(keep=False)).map({True: '重复', False: '不重复'})

内容的提问来源于stack exchange,提问作者DANIEL GARCIA DE CACERES HERRA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:33:21