如何在 Pandas 中正确使用 isin 与多条件组合进行数据筛选
发布时间 - 2025-12-29 00:00:00 点击率:次本文详解 pandas 中 `isin()` 与其它条件(如数值比较)联合过滤 dataframe
的常见错误及解决方案,重点解决因数据类型不匹配(如字符串 `'2025'` 误用于整型 `year` 列)导致的空结果问题。
在使用 Pandas 进行数据筛选时,isin() 是高效判断某列值是否属于指定集合的常用方法。但当它与其它条件(如年份等于 2025)组合使用时,极易因数据类型不一致而返回空结果——这正是你遇到问题的根本原因。
你的原始代码如下:
df.loc[(df['Item Code'].isin(['04901', '04940'])) & (df['Year'] == '2025')]
看似逻辑清晰,但若 df['Year'] 列的实际数据类型为 int64(即数值型年份),那么用字符串 '2025' 去比较将永远返回 False,最终整个布尔索引结果全为 False,故返回空 DataFrame。
✅ 正确做法是确保类型严格匹配:
- 若 Year 为整数(最常见情况),应写为 2025(无引号):
df[(df['Item Code'].isin(['04901', '04940'])) & (df['Year'] == 2025)]
- 更推荐使用链式调用与 eq() 方法,语法更清晰、可读性更强,且同样避免隐式类型转换风险:
df[df['Item Code'].isin(['04901', '04940']) & df['Year'].eq(2025)]
? 验证数据类型的小技巧:
运行 df.dtypes 查看各列类型。若发现 Year 显示为 int64 或 float64,则必须用数值比较;若为 object 且实际存的是字符串年份(如 '2025'),才可用 '2025'。必要时可统一转换类型:
df['Year'] = pd.to_numeric(df['Year'], errors='coerce') # 转为数值,异常转为 NaN
⚠️ 注意事项:
- & 是位运算符,必须用括号包裹每个条件(如 (cond1) & (cond2)),否则因运算符优先级会导致语法错误或逻辑错误;
- 避免混用 loc 和纯布尔索引:除非需同时选行列,否则直接 df[boolean_mask] 更简洁高效;
- isin() 支持列表、元组、NumPy 数组等可迭代对象,但不支持单个值(此时应直接用 ==)。
总结:Pandas 筛选失败的“头号杀手”往往是隐形的数据类型错配。养成检查 dtypes、显式指定匹配类型的习惯,能大幅减少此类调试时间。
# 可迭代对象
# 隐式类型转换
# numpy
# pandas
# 数据类型
# Object
# 运算符
# 整型
# 位运算符
# 字符串
# 类型转换
# 对象
# 布尔
# 链式
# 的是
# 推荐使用
# 此类
# 更强
# 但不
# 时应
# 但当
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Android okhttputils现在进度显示实例代码
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
网页设计与网站制作内容,怎样注册网站?
高端网站建设与定制开发一站式解决方案 中企动力
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
javascript中对象的定义、使用以及对象和原型链操作小结
如何快速配置高效服务器建站软件?
javascript日期怎么处理_如何格式化输出
在线制作视频网站免费,都有哪些好的动漫网站?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
iOS中将个别页面强制横屏其他页面竖屏
java获取注册ip实例
如何将凡科建站内容保存为本地文件?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
网站制作报价单模板图片,小松挖机官方网站报价?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何自定义建站之星网站的导航菜单样式?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何在橙子建站上传落地页?操作指南详解
如何快速查询域名建站关键信息?
微信小程序 HTTPS报错整理常见问题及解决方案
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
javascript读取文本节点方法小结
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
如何快速生成专业多端适配建站电话?
如何用好域名打造高点击率的自主建站?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
独立制作一个网站多少钱,建立网站需要花多少钱?
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Bootstrap CSS布局之列表
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel如何使用查询构建器?(Query Builder高级用法)
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
济南网站建设制作公司,室内设计网站一般都有哪些功能?
Linux网络带宽限制_tc配置实践解析【教程】
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
在centOS 7安装mysql 5.7的详细教程
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
JS碰撞运动实现方法详解

