Python中使用pandas的isin()与多条件筛选数据的正确方法
发布时间 - 2025-12-29 00:00:00 点击率:次本文详解如何在pandas中结合isin()方法与其他条件(如年份匹配)高效筛选dataframe数据,并重点指出因数据类型不匹配(如字符串'2025' vs 整数2025)导致筛选结果为空的常见陷阱及解决方案。
在使用pandas进行数据筛选时,isin() 是处理“多值枚举匹配”的高效工具,常与逻辑运算符(&、|、~)组合实现复杂条件过滤。但一个极易被忽视的关键点是:列的数据类型必须与比较值严格一致。例如,你的原始代码:
df.loc[(df['Item Code'].isin(['04901', '04940'])) & (df['Year'] == '2025')]
之所以返回空结果,并非语法错误,而极大概率是 df['Year'] 列实际为整数类型(int64),却用字符串 '2025' 去匹配——这在pandas中会返回全 False 的布尔序列,最终导致零行被选中。
✅ 正确做法是先确认并统一数据类型。推荐按以下步骤排查与修正:
-
检查列的实际数据类型:
print(df['Year'].dtype) # 查看输出,常见为 int64 或 object print(df['Year'].head()) # 观察前几行真实值(是否带引号?有无空值?)
-
根据类型选择匹配方式:
- 若 Year 为整数型(最常见):
# 推荐写法:简洁、高效、可读性强 result = df[df['Item Code'].isin(['04901', '04940']) & (df['Year'] == 2025)]
- 若 Year 为字符串型(如从CSV读入未指定类型):
# 确保两边均为字符串 result = df[df['Item Code'].isin(['04901', '04940']) & (df['Year'] == '2025')]
- 若 Year 为整数型(最常见):
-
进阶技巧:提升健壮性与可读性
使用 .eq() 方法替代 == 可避免某些链式操作中的括号歧义;同时建议显式使用 .copy() 避免 SettingWithCopyWarning(若后续需修改结果):result = df[ df['Item Code'].isin(['04901', '04940']) & df['Year'].eq(2025) ].copy()
⚠️ 注意事项:
- & 是位运算符,必须用圆括号包裹每个条件,否则因运算符优先级问题会导致 TypeError 或逻辑错误(如 df['A']==1 & df['B']==2 ❌ 错误,应写为 (df['A']==1) & (df['B']==2) ✅);
- isin
() 对 NaN 值默认返回 False,若需包含缺失值,请额外用 isna() 组合; - 如需年份范围筛选(如2025–2025),可用 df['Year'].between(2025, 2025) 替代多个 ==。
掌握数据类型一致性与布尔索引规范,是写出可靠pandas筛选逻辑的基础。务必养成 print(df.dtypes) 和 df.sample(3) 快速探查数据的习惯。
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
创业网站制作流程,创业网站可靠吗?
详解阿里云nginx服务器多站点的配置
音响网站制作视频教程,隆霸音响官方网站?
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
浅述节点的创建及常见功能的实现
iOS中将个别页面强制横屏其他页面竖屏
网站建设整体流程解析,建站其实很容易!
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
Python图片处理进阶教程_Pillow滤镜与图像增强
Linux安全能力提升路径_长期防护思维说明【指导】
高端云建站费用究竟需要多少预算?
如何在香港服务器上快速搭建免备案网站?
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
个人摄影网站制作流程,摄影爱好者都去什么网站?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
网易LOFTER官网链接 老福特网页版登录地址
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
高性能网站服务器部署指南:稳定运行与安全配置优化方案
制作旅游网站html,怎样注册旅游网站?
,在苏州找工作,上哪个网站比较好?
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Laravel如何创建自定义Facades?(详细步骤)
如何挑选优质建站一级代理提升网站排名?
如何破解联通资金短缺导致的基站建设难题?
详解vue.js组件化开发实践
iOS正则表达式验证手机号、邮箱、身份证号等
Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】
nginx修改上传文件大小限制的方法
在Oracle关闭情况下如何修改spfile的参数
Laravel如何处理和验证JSON类型的数据库字段
Python数据仓库与ETL构建实战_Airflow调度流程详解
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Laravel如何使用.env文件管理环境变量?(最佳实践)
php结合redis实现高并发下的抢购、秒杀功能的实例
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
如何在阿里云高效完成企业建站全流程?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南


() 对 NaN 值默认返回 False,若需包含缺失值,请额外用 isna() 组合;