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

如何用Pandas处理Excel数据:按列值去重并忽略指定列值

实现A列去重但保留所有A=2的行

原始数据

A B
1 10
1 20
2 30
2 40
3 10
3 20

目标结果

A B
1 10
2 30
2 40
3 10

问题分析

你当前的代码df.drop_duplicates(subset=["A", "B"], keep='first')是按A和B的组合去重,既不符合“对A列去重”的需求,也没有区分A=2的特殊情况,因此无法得到预期结果。

解决方案

将数据拆分为两部分分别处理:A≠2的行按A列去重保留第一行,A=2的行全部保留,最后合并两部分并维持原始顺序:

import pandas as pd

df = pd.read_excel(save_filename)
# 处理A≠2的行:按A列去重,保留每个A值的第一行
df_filtered = df[df['A'] != 2].drop_duplicates(subset=['A'], keep='first')
# 保留所有A=2的行
df_keep_all = df[df['A'] == 2]
# 合并数据并按原始索引排序,保证行顺序与原数据一致
result_df = pd.concat([df_filtered, df_keep_all]).sort_index()
# 保存结果到Excel
result_df.to_excel(save_filename, index=False)

说明

  • df[df['A'] != 2].drop_duplicates(subset=['A'], keep='first'):筛选出A不等于2的行,仅按A列去重,保留每个A值首次出现的行
  • df[df['A'] == 2]:直接保留所有A=2的行
  • pd.concat([...]).sort_index():合并两部分数据后按原始索引排序,确保行的顺序和原Excel中的顺序一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:32:33