Python遍历DataFrame两列删除重复值保留最高得分行实现方案
实现思路
因为你已经提前按Column C做了降序排序,只需要从上到下遍历所有行,维护一个已出现值的集合即可:
- 初始化空集合存储所有已经出现过的Column A和Column B的值
- 逐行检查当前行的Column A、Column B是否有值在集合中存在,只要有一个存在就跳过当前行
- 无论当前行是否保留,都把该行的Column A和Column B的值加入已出现集合(因为只要该值首次出现后,后续所有含该值的行都要删除)
- 最终保留的行就是符合要求的结果
完整代码实现
import pandas as pd # 构造示例数据,实际使用时替换成自己的DataFrame即可 df = pd.DataFrame({ 'Column A': [5,5,10,7,7,12,14], 'Column B': [10,12,12,14,9,6,4], 'Column C': [1.5,1.4,1.0,0.9,0.8,0.7,0.6] }) # 如果还没有按Column C降序排序,先执行下面这行 # df = df.sort_values('Column C', ascending=False).reset_index(drop=True) seen = set() keep_idx = [] for idx, row in df.iterrows(): a_val = row['Column A'] b_val = row['Column B'] if a_val not in seen and b_val not in seen: keep_idx.append(idx) # 不管是否保留当前行,都把两个值加入已出现集合 seen.add(a_val) seen.add(b_val) # 筛选结果,会保留DataFrame所有原始列 result_df = df.loc[keep_idx].reset_index(drop=True) print(result_df)
输出结果
Column A Column B Column C 0 5 10 1.5 1 7 14 0.9
内容的提问来源于stack exchange,提问作者mashit101
相关产品推荐
相关产品推荐

