如何使用Pandas查找DataFrame中仅单列含指定值其余列为空的行
解决方案
你可以通过组合两个行级判断条件实现筛选,逻辑如下:
- 先保证每行恰好只有1个目标值(示例中为3)
- 再验证替换掉目标值后,整行剩余元素全部为0或空值
示例代码
import pandas as pd # 构造示例DataFrame df = pd.DataFrame( data=[[1,2,3], [3,0,0], [0,4,3], [0,3,0]], index=['data 1', 'data 2', 'data 3', 'data 4'], columns=['column1', 'column2', 'column3'] ) target = 3 # 条件1:每行恰好有1个目标值 cond1 = (df == target).sum(axis=1) == 1 # 条件2:替换目标值、填充空值为0后,整行无其他非0值 cond2 = (df.replace(target, 0).fillna(0) != 0).sum(axis=1) == 0 # 筛选结果 result = df[cond1 & cond2] print(result)
输出结果
column1 column2 column3 data 2 3 0 0 data 4 0 3 0
逻辑说明
- 若你的数据中存在空值
NaN,代码里的fillna(0)已经自动兼容了这类场景 - 如果要修改目标值,直接调整
target变量即可,无需改动其他逻辑
内容的提问来源于stack exchange,提问作者Pedram
相关产品推荐
相关产品推荐

