如何用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
相关产品推荐
相关产品推荐

