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

