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

Pandas如何删除DataFrame中两列值无序重复的行并保留首项

问题原因

你原来使用frozenset的方案逻辑上符合无序去重的要求,但存在两个问题:

  • 行级apply操作在数据量较大时性能极低
  • 部分pandas版本对frozenset类型的列执行duplicated()时存在兼容性问题,导致去重失效

解决方案

推荐使用向量化排序的方案实现需求,性能更稳定,也能完美适配所有pandas版本:

import numpy as np

# 对每行的两个标签值做升序排序,保证无序相同的组合会生成完全一致的有序数组
sorted_labels = np.sort(df[["label", "label2"]], axis=1)
# 基于排序后的结果判断重复,保留首次出现的行
res = df[~pd.DataFrame(sorted_labels).duplicated()]

执行后输出的结果和你预期的一致:

label label2
0     A      C
1     B      D
2     G      O

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:36:04