如何通过先比较第三列值去除DataFrame中两列的重复项?
按指定列去重,保留目标列值最小的行
针对你的需求,这里有两种简洁高效的实现方式,都能处理多组重复项的场景:
方法一:分组取最小索引筛选
先通过分组找到每组中column_3值最小的行的索引,再提取对应行:
import pandas as pd # 示例数据 a = [{'column_1': 'A', 'column_2': 'B', 'column_3': 20.14}, {'column_1': 'A', 'column_2': 'B', 'column_3': 20.35}] df = pd.DataFrame(a) # 获取每组中column_3最小的行索引 min_row_indices = df.groupby(['column_1', 'column_2'])['column_3'].idxmin() # 筛选结果并重置索引 result_df = df.loc[min_row_indices].reset_index(drop=True)
方法二:排序后去重
先按column_3升序排序,让每组里值最小的行排在最前面,再用去重保留第一个条目:
result_df = df.sort_values('column_3') \ .drop_duplicates(['column_1', 'column_2'], keep='first') \ .reset_index(drop=True)
验证结果
两种方法运行后,都会得到符合预期的结果:
column_1 column_2 column_3 0 A B 20.14
不管每组有多少重复条目,这两种方法都能准确保留column_3值最小的那一行。
内容的提问来源于stack exchange,提问作者LiAfe
相关产品推荐
相关产品推荐

