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

如何用Pandas检测并标记Cntr_No与Total_Amount同时重复的数据行

如何检测并标记DataFrame中Cntr_No与Total_Amount同时重复的记录

要解决这个同时基于Cntr_No和Total_Amount两列组合检测重复行并标记的需求,用Pandas的duplicated()方法就能轻松实现,下面是具体的步骤和代码示例:

1. 导入依赖并准备示例数据

首先确保你已经导入了Pandas库,然后创建你提供的示例DataFrame:

import pandas as pd

# 示例数据df1
df1 = pd.DataFrame({'Cntr_No': ['HLBU 1234567','HLBU 1234567'], 'Total_Amount': [100,100]})
# 示例数据df2(处理逻辑和df1完全一致)
df2 = pd.DataFrame({'Cntr_No': ['HLBU 1234567','HLBU 1234567'], 'Total_Amount': [100,100]})

2. 添加重复标记列

使用duplicated()方法指定要检查重复的列组合,再通过map()将布尔值转换为你需要的"Yes"/"No"文本:

# 为df1添加Duplicate列
df1['Duplicate'] = df1.duplicated(subset=['Cntr_No', 'Total_Amount'], keep=False).map({True: 'Yes', False: 'No'})

# 同样的逻辑处理df2
df2['Duplicate'] = df2.duplicated(subset=['Cntr_No', 'Total_Amount'], keep=False).map({True: 'Yes', False: 'No'})

3. 查看结果

打印处理后的df1,就能得到你期望的输出:

print(df1)

输出结果:

Cntr_No Total_Amount Duplicate
0 HLBU 1234567 100 Yes
1 HLBU 1234567 100 Yes

关键参数说明

  • subset=['Cntr_No', 'Total_Amount']:指定以这两列的组合作为重复判断的依据,而不是整行。
  • keep=False:会将所有重复的行都标记为True,这是实现你示例中全部标记为"Yes"的关键。如果需要只标记后续出现的重复行,可以改为keep='first';如果只标记首次出现的重复行之外的最后一行,改为keep='last'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:01:24