当前位置: 首页 > news >正文

【Python】探索 Pandas 中的 where 方法:条件筛选的利器


那年夏天我和你躲在 这一大片宁静的海
直到后来我们都还在 对这个世界充满期待
今年冬天你已经不在 我的心空出了一块
很高兴遇见你 让我终究明白
回忆比真实精彩
                     🎵 王心凌《那年夏天宁静的海》


在数据分析中,Pandas 是一个强大且灵活的工具包,为数据操作和分析提供了丰富的功能。where 方法是 Pandas 中一个非常实用的功能,它允许我们基于条件筛选和处理数据。本文将详细介绍 where 方法的用法,帮助你在数据处理中更高效地进行条件筛选和替换操作。

什么是 where 方法?

where 方法用于基于一个布尔条件筛选 DataFrame 或 Series 中的元素。它保留满足条件的元素,对于不满足条件的元素,where 方法可以将其替换为指定的值(默认情况下为 NaN)。

where 方法的基本语法

DataFrame.where(cond, other=nan, inplace=False, axis=None, level=None, errors='raise', try_cast=False)

cond: 一个布尔条件,可以是 DataFrame 或 Series。元素为 True 的位置会保留原值,False 的位置会被替换。
other: 替换值,默认是 NaN。
inplace: 是否在原 DataFrame 上进行操作,默认为 False。如果设为 True,将在原 DataFrame 上进行修改。
axis: 应用条件的轴,默认为 None。
level: 如果目标是 MultiIndex(层次化索引),可以指定级别。
errors: 错误处理方式,默认为 ‘raise’。
try_cast: 尝试转换到相同的类型,默认为 False。

基本用法示例

以下是一些具体示例,展示如何在不同场景下使用 where 方法。

示例 1:基于条件筛选

假设我们有一个包含学生成绩的 DataFrame,我们希望筛选出所有及格(分数>=60)的成绩,其余的替换为 NaN。

import pandas as pd
import numpy as npdata = {'Math': [58, 80, 90, 45, 60], 'English': [75, 65, 50, 80, 85]}
df = pd.DataFrame(data)# 使用 where 方法进行条件筛选
df_passing = df.where(df >= 60)
print(df_passing)

输出:

   Math  English
0   NaN     75.0
1  80.0     65.0
2  90.0      NaN
3   NaN     80.0
4  60.0     85.0
示例 2:指定替换值

我们可以指定一个替换值,而不是默认的 NaN。例如,将不及格的成绩替换为 0。

df_passing = df.where(df >= 60, other=0)
print(df_passing)

输出:

   Math  English
0     0       75
1    80       65
2    90        0
3     0       80
4    60       85
示例 3:多重条件筛选

我们可以基于多个条件进行筛选。例如,将数学和英语成绩都及格的学生成绩保留,其余替换为 NaN。

df_passing = df.where((df['Math'] >= 60) & (df['English'] >= 60))
print(df_passing)

输出:

   Math  English
0   NaN     75.0
1  80.0     65.0
2   NaN      NaN
3   NaN      NaN
4  60.0     85.0
示例 4:在原 DataFrame 上进行操作

如果我们希望在原 DataFrame 上直接进行修改,可以使用 inplace=True。

df.where(df >= 60, other=0, inplace=True)
print(df)

输出:

   Math  English
0     0       75
1    80       65
2    90        0
3     0       80
4    60       85

总结

Pandas 的 where 方法是一个功能强大的工具,用于基于条件筛选和替换数据。它不仅可以帮助我们快速筛选满足特定条件的数据,还能灵活地处理不满足条件的数据。通过本文的介绍,希望你能在实际数据处理中更好地应用 where 方法,提高数据处理的效率和准确性。无论是进行简单的条件筛选还是复杂的多重条件处理,where 方法都能为你的数据分析工作提供极大的便利。

相关文章:

【Python】探索 Pandas 中的 where 方法:条件筛选的利器

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 🎵 王心凌《那年夏天宁静的海》 在数据分析中,Pandas 是一个强大且…...

Pikachu靶场--Sql Inject

参考借鉴 pikachu靶场练习(详细,完整,适合新手阅读)-CSDN博客 数字型注入(post) 这种类型的SQL注入利用在用户输入处插入数值,而不是字符串。攻击者试图通过输入数字来修改SQL查询的逻辑,以执行恶意操作。…...

【Python从入门到进阶】59、Pandas库中Series对象的操作(二)

接上篇《58、Pandas库中Series对象的操作(一)》 上一篇我们讲解了Pandas库中Series对象的基本概念、对象创建和操作,本篇我们来继续学习Series对象的运算、函数应用、时间序列操作,以及Series的案例实践。 一、Series对象的运算 1. 数值型数据的算术运…...

【PYG】使用datalist定义数据集,创建一个包含多个Data对象的列表并使用DataLoader来加载这些数据

为了使用你提到的封装方式来创建一个包含多个 Data 对象的列表并使用 DataLoader 来加载这些数据,我们可以按照以下步骤进行: 创建数据:生成节点特征矩阵、边索引矩阵和标签。封装数据:使用 Data 对象将这些数据封装起来。使用 D…...

【设计模式】【创建型5-2】【工厂方法模式】

文章目录 工厂方法模式工厂方法模式的结构示例产品接口具体产品工厂接口具体工厂客户端代码 实际的使用 工厂方法模式 工厂方法模式的结构 产品(Product):定义工厂方法所创建的对象的接口。 具体产品(ConcreteProduct&#xff0…...

python API自动化(Pytest+Excel+Allure完整框架集成+yaml入门+大量响应报文处理及加解密、签名处理)

1.pytest数据参数化 假设你需要测试一个登录功能,输入用户名和密码后验证登录结果。可以使用参数化实现多组输入数据的测试: 测试正确的用户名和密码登录成功 测试正确的用户名和错误的密码登录失败 测试错误的用户名和正确的密码登录失败 测试错误的用户名和密码登…...

【Postman学习】

Postman是一个非常流行的API开发和测试工具,广泛用于Web服务的开发、测试和调试。它提供了一个图形界面,允许用户轻松地构建、发送和管理HTTP(S)请求,同时查看和分析响应。下面是对Postman接口测试工具的详细解释: 1. Postman简介…...

【Linux】IO多路复用——select,poll,epoll的概念和使用,三种模型的特点和优缺点,epoll的工作模式

文章目录 Linux多路复用1. select1.1 select的概念1.2 select的函数使用1.3 select的优缺点 2. poll2.1 poll的概念2.2 poll的函数使用2.3 poll的优缺点 3. epoll3.1 epoll的概念3.2 epoll的函数使用3.3 epoll的优点3.4 epoll工作模式 Linux多路复用 IO多路复用是一种操作系统的…...

IBCS 虚拟专线——让企业用于独立IP

在当今竞争激烈的商业世界中,企业的数字化运营对网络和服务器的性能有着极高的要求。作为一家企业的 IT 主管,我深刻体会到了在网络和服务器配置方面所面临的种种挑战,以及 IBCS 虚拟专线带来的革命性改变。 我们企业在业务扩张的过程中&…...

驾驭巨龙:Perl中大型文本文件的处理艺术

驾驭巨龙:Perl中大型文本文件的处理艺术 Perl,这门被亲切称为“实用提取和报告语言”的编程语言,自从诞生之日起,就以其卓越的文本处理能力闻名于世。在面对庞大的文本文件时,Perl的强大功能更是得到了充分的体现。本…...

Kafka~特殊技术细节设计:分区机制、重平衡机制、Leader选举机制、高水位HW机制

分区机制 Kafka 的分区机制是其实现高吞吐和可扩展性的重要特性之一。 Kafka 中的数据具有三层结构,即主题(topic)-> 分区(partition)-> 消息(message)。一个 Kafka 主题可以包含多个分…...

springcloud-config 客户端启用服务发现client的情况下使用metadata中的username和password

为了让spring admin 能正确获取到 spring config的actuator的信息,在eureka的metadata中添加了metadata.user.user metadata.user.password eureka.instance.metadata-map.user.name${spring.security.user.name} eureka.instance.metadata-map.user.password${spr…...

云计算 | 期末梳理(中)

1. 经典虚拟机的特点 多态(Polymorphism):支持多种类型的OS。重用(Manifolding):虚拟机的镜像可以被反复复制和使用。复用(Multiplexing):虚拟机能够对物理资源时分复用。2. 系统接口 最基本的接口是微处理器指令集架构(ISA)。应用程序二进制接口(ABI)给程序提供使用硬件资源…...

pytest测试框架pytest-order插件自定义用例执行顺序

pytest提供了丰富的插件来扩展其功能,本章介绍插件pytest-order,用于自定义pytest测试用例的执行顺序。pytest-order是插件pytest-ordering的一个分支,但是pytest-ordering已经不再维护了,建议大家直接使用pytest-order。 官方文…...

吴恩达机器学习 第三课 week2 推荐算法(上)

目录 01 学习目标 02 推荐算法 2.1 定义 2.2 应用 2.3 算法 03 协同过滤推荐算法 04 电影推荐系统 4.1 问题描述 4.2 算法实现 05 总结 01 学习目标 (1)了解推荐算法 (2)掌握协同过滤推荐算法(Collabo…...

MySQL CASE 表达式

MySQL CASE表达式 一、CASE表达式的语法二、 常用场景1,按属性分组统计2,多条件统计3,按条件UPDATE4, 在CASE表达式中使用聚合函数 三、CASE表达式出现的位置 一、CASE表达式的语法 -- 简单CASE表达式 CASE sexWHEN 1 THEN 男WHEN 2 THEN 女…...

Unity3D 游戏数据本地化存储与管理详解

在Unity3D游戏开发中,数据的本地化存储与管理是一个重要的环节。这不仅涉及到游戏状态、玩家信息、游戏设置等关键数据的保存,还关系到游戏的稳定性和用户体验。本文将详细介绍Unity3D中游戏数据的本地化存储与管理的技术方法,并给出相应的代…...

昇思25天学习打卡营第1天|初学教程

文章目录 背景创建环境熟悉环境打卡记录学习总结展望未来 背景 参加了昇思的25天学习记录,这里给自己记录一下所学内容笔记。 创建环境 首先在平台注册账号,然后登录,按下图操作,创建环境即可 创建好环境后进入即可&#xff0…...

ctfshow-web入门-命令执行(web59-web65)

目录 1、web59 2、web60 3、web61 4、web62 5、web63 6、web64 7、web65 都是使用 highlight_file 或者 show_source 1、web59 直接用上一题的 payload: cshow_source(flag.php); 拿到 flag:ctfshow{9e058a62-f37d-425e-9696-43387b0b3629} 2、w…...

Websocket在Java中的实践——最小可行案例

大纲 最小可行案例依赖开启Websocket,绑定路由逻辑类 测试参考资料 WebSocket是一种先进的网络通信协议,它允许在单个TCP连接上进行全双工通信,即数据可以在同一时间双向流动。WebSocket由IETF标准化为RFC 6455,并且已被W3C定义为…...

从会议录音到字幕生成:基于FunASR和SpringBoot搭建一个轻量级语音处理中台

从会议录音到字幕生成:基于FunASR和SpringBoot搭建轻量级语音处理中台 每周例会后,行政小张总要花两小时反复听录音整理纪要。市场部的跨国会议录音,技术团队的头脑风暴存档,管理层战略讨论的逐字记录——这些音频文件堆积在共享…...

TranslateGemma部署避坑指南:常见问题与解决方案

TranslateGemma部署避坑指南:常见问题与解决方案 1. 部署前的硬件准备 1.1 显卡配置要求 TranslateGemma-12B-IT模型需要两张NVIDIA RTX 4090显卡协同工作,这是由模型并行技术决定的硬性要求。实际测试中发现: 单卡尝试运行会立即报错CUD…...

避坑指南:Synopsys VCS工具安装中的5个常见错误及解决方案

Synopsys VCS工具安装避坑实战:从报错排查到环境调优 在芯片设计领域,Synopsys VCS作为业界标准的仿真工具,其安装过程却常常成为工程师们的"第一道门槛"。不同于简单的解压即用软件,VCS的安装涉及复杂的依赖关系、权限…...

如何在macOS上制作Windows启动盘:WinDiskWriter终极指南

如何在macOS上制作Windows启动盘:WinDiskWriter终极指南 【免费下载链接】windiskwriter 🖥 A macOS app that creates bootable USB drives for Windows. 🛠 Patches Windows 11 to bypass TPM and Secure Boot requirements. 项目地址: h…...

C# : 引用类型都存在堆上吗

不完全是,这里要精确区分:引用类型的实例大多数存在堆上,但引用本身不一定在堆上。我们拆开来说:引用类型本身 vs 引用变量对象实例(类的实例)绝大多数情况下分配在 堆上由 垃圾回收器 管理生命周期引用变量…...

别啃书了!用这款70块的Steam游戏《Turing Complete》,手把手带你从逻辑门拼出CPU

从逻辑门到CPU:用《Turing Complete》重构计算机组成原理学习体验 当我在大学第一次翻开《计算机组成原理》教材时,那些密密麻麻的逻辑门符号和抽象的数据通路图让我头皮发麻。直到在Steam上发现标价70元的《Turing Complete》——这款看似简单的电路模拟…...

用Rust还是JavaScript?Tauri 2.0系统托盘开发的两种姿势与选型建议

Tauri 2.0系统托盘开发:Rust与JavaScript的技术选型深度解析 当桌面应用需要常驻后台运行时,系统托盘功能便成为用户体验的关键组件。Tauri 2.0作为新一代跨平台桌面框架,允许开发者在前端JavaScript与后端Rust两种技术栈中实现这一功能。本文…...

28:L构建AI Agent安全:蓝队的智能代理防御

作者: HOS(安全风信子) 日期: 2026-03-19 主要来源平台: GitHub 摘要: AI Agent的发展为安全防御带来了新的可能性,但也带来了新的安全挑战。基拉等对手可能利用AI Agent进行攻击。L深入研究AI Agent安全技术&#xff…...

Ludusavi:你的游戏进度守护神,三分钟搞定跨平台存档备份

Ludusavi:你的游戏进度守护神,三分钟搞定跨平台存档备份 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/gh_mirrors/lu/ludusavi 你是否曾在电脑崩溃后,发现数百小时的游戏进度瞬间归零&…...

工业质检避坑指南:手把手教你根据数据成本选择异常检测模型(RGB/PCD/多模态实战)

工业质检实战:如何基于数据成本选择最优异常检测方案 在工业质检领域,算法工程师常面临一个现实困境:实验室里刷榜的模型往往需要昂贵的数据采集设备,而工厂产线上可能只有最基础的RGB相机。我曾参与过多个工业质检项目&#xff0…...