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

如何使用Pandas基于指定两列删除Excel导入的DataFrame重复值?

基于两列值删除Pandas DataFrame中的重复项

嘿,看来你已经成功把Excel数据导入到Pandas DataFrame里了,现在要基于两列的值删除重复项对吧?这事儿用Pandas的drop_duplicates()方法就能轻松搞定,刚好你的Pandas 0.22版本完全支持这个功能,我给你详细说说怎么弄:

首先,先把你现有的导入代码格式化好:

# Python 3.5.2 
# Pandas库版本0.22 
import pandas as pd 

# 将Excel工作簿保存至变量 
current_workbook = pd.ExcelFile('C:\Users\userX\Desktop\cost_values.xlsx') 

# 将工作簿转换为DataFrame(设置vend_num为索引列)
current_worksheet = pd.read_excel(current_workbook, index_col='vend_num') 

# 打印当前DataFrame
print(current_worksheet)

接下来,要实现基于两列去重,只需要调用drop_duplicates()方法,并通过subset参数指定你要用来判断重复的两列名称即可。这里给你几个常用的场景示例:

示例1:保留第一个出现的重复行(默认行为)

假设你要基于vend_number和cost这两列去重,保留每组重复数据中的第一行:

# 生成去重后的新DataFrame(不修改原数据)
deduped_df = current_worksheet.drop_duplicates(subset=['vend_number', 'cost'], keep='first')

# 打印去重结果
print(deduped_df)

示例2:保留最后一个出现的重复行

如果你想保留每组重复数据中的最后一行,只需要把keep参数改成'last':

deduped_df = current_worksheet.drop_duplicates(subset=['vend_number', 'cost'], keep='last')

示例3:删除所有重复行(无保留)

如果某两行在指定的两列上完全相同,你想把这两行都删掉,就把keep设为False:

deduped_df = current_worksheet.drop_duplicates(subset=['vend_number', 'cost'], keep=False)

示例4:直接修改原DataFrame

如果你不想生成新的DataFrame,而是直接在原数据上修改,加上inplace=True参数即可:

current_worksheet.drop_duplicates(subset=['vend_number', 'cost'], keep='first', inplace=True)
print(current_worksheet)

小提示

  • 记得把subset里的列名替换成你实际需要的两列,比如如果是item_code和vendor_id,就改成subset=['item_code', 'vendor_id']
  • 你的Pandas 0.22版本完全支持这些参数,不用担心兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:30:07