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

如何在Pandas DataFrame中找出仅出现一次的行

提取DataFrame中仅出现一次的行(无需指定列名)

问题场景

你有如下Pandas DataFrame:

import pandas as pd

student_dict = {
"ID":[101,102,103,104,105,101,102,103,104,105,106,107],
"Student":["AAA","BBB","CCC","DDD","EEE","AAA","BBB","CCC","DDD","EEE","YYY","ZZZ"],
"Mark":[50,100,99,60,80,50,100,99,60,80,100,80],
"Address":["St.AAA","St.BBB","St.CCC","St.DDD","St.EEE","St.AAA","St.BBB","St.CCC","St.DDD","St.EEE","St.AYE","St.ZZZ"],
"PhoneNo":[1111111111,2222222222,3333333333,4444444444,5555555555,1111111111,2222222222,3333333333,4444444444,5555555555,6666666666,7777777777]
}

df = pd.DataFrame(student_dict)

其中大部分行存在重复,仅ID为106、107的行是唯一的。使用df.drop_duplicates()会保留重复行的首次出现记录+唯一行,但你需要仅提取整个行仅出现一次的结果:

ID Student  Mark Address     PhoneNo
106     YYY   100  St.AYE  6666666666
107     ZZZ    80  St.ZZZ  7777777777

需要一种无需指定列名、直接基于整行判断的方法提取这些唯一行。

解决方案

方法1:利用duplicated(keep=False)高效筛选

duplicated(keep=False)会把所有重复出现的行(包括首次和后续的重复项)标记为True,取反后就能得到仅出现一次的行:

# 筛选仅出现一次的行
unique_rows = df[~df.duplicated(keep=False)]
print(unique_rows)

该方法性能最优,适合处理大数据量的DataFrame。

方法2:通过行频次统计筛选

先将每行转为元组统计出现次数,再筛选频次为1的行:

# 统计每行的出现频次
row_counts = df.apply(tuple, axis=1).value_counts()
# 筛选出频次为1的行对应的元组
unique_tuples = row_counts[row_counts == 1].index
# 匹配原DataFrame中的对应行
unique_rows = df[df.apply(tuple, axis=1).isin(unique_tuples)]
print(unique_rows)

该方法更直观,可先查看所有行的重复频次,再做筛选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:35:56