如何使用逻辑操作符简便实现多值排除的DataFrame数据筛选
Pandas多值排除筛选的简化实现
你目前逐行写不等于判断的写法完全可以简化,不需要逐行堆叠条件,通过isin()方法配合逻辑取反符~就能一步完成多值排除,最终筛选效果和你现有的写法完全一致,代码参考如下:
# 预先整理需要排除的location值,后续调整规则只需要修改这个列表 exclude_locations = ['World', 'Europe', 'North America', 'European Union', 'South America', 'Asia'] # 合并所有筛选条件,一次性生成目标数据集 droppedd = dropped[ (dropped['date'] == '2021-04-04') & (~dropped['location'].isin(exclude_locations)) ]
相关说明
- 之前尝试把列表直接传入筛选条件报错的原因:
!=这类比较运算符不支持直接和列表做逐元素匹配,必须通过isin()方法判断列值是否属于指定集合;在isin()判断前加~就是取反逻辑,等价于“列值不在排除列表中”,和逐行写多个!=的筛选结果没有差异。 - 多条件组合时,每个独立的判断块建议用括号包裹,避免因逻辑运算符优先级问题导致筛选结果出错。
- 后续如果要新增或移除需要排除的location值,只需要调整
exclude_locations列表的内容即可,不需要逐行修改筛选代码。
内容的提问来源于stack exchange,提问作者Atilla Colak
相关产品推荐
相关产品推荐

