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

【Pandas】pandas DataFrame where

Pandas2.2 DataFrame

Indexing, iteration

方法描述
DataFrame.head([n])用于返回 DataFrame 的前几行
DataFrame.at快速访问和修改 DataFrame 中单个值的方法
DataFrame.iat快速访问和修改 DataFrame 中单个值的方法
DataFrame.loc用于基于标签(行标签和列标签)来访问和修改 DataFrame 中的数据
DataFrame.iloc用于基于整数位置(行号和列号)来访问和修改 DataFrame 中的数据
DataFrame.insert(loc, column, value[, …])用于在 DataFrame 的指定位置插入一个新的列
DataFrame.iter()用于迭代 DataFrame 的列名
DataFrame.items()用于迭代 DataFrame 的列名和列数据
DataFrame.keys()返回 DataFrame 的列名
DataFrame.iterrows()用于逐行迭代 DataFrame
DataFrame.itertuples([index, name])用于逐行迭代 DataFrame
DataFrame.pop(item)用于从 DataFrame 中删除指定列
DataFrame.tail([n])用于返回 DataFrame 的最后 n
DataFrame.xs(key[, axis, level, drop_level])用于从 DataFrame 中提取一个横截面(cross-section)
DataFrame.get(key[, default])用于从 DataFrame 中获取指定列的数据
DataFrame.isin(values)用于检查 DataFrame 中的每个元素是否包含在指定的值集合中
DataFrame.where(cond[, other, inplace, …])用于根据条件筛选 DataFrame 中的元素

pandas.DataFrame.where()

pandas.DataFrame.where(cond, other=nan, *, inplace=False, axis=None, level=None) 方法用于根据条件筛选 DataFrame 中的元素。如果条件为 True,则保留元素;如果条件为 False,则用 other 参数指定的值替换该元素。

参数
  • cond:布尔条件,可以是布尔值、布尔数组、布尔 DataFrame 或布尔 Series。
  • other:可选参数,当条件为 False 时使用的值。默认为 NaN
  • inplace:布尔值,如果为 True,则直接在原 DataFrame 上进行修改,否则返回一个新的 DataFrame。默认为 False
  • axis:指定轴,0'index' 表示按行,1'columns' 表示按列。默认为 None
  • level:如果索引是多级索引,指定要使用的级别。默认为 None
返回值
  • 如果 inplace=False,返回一个新的 DataFrame。
  • 如果 inplace=True,返回 None
示例

假设我们有一个 DataFrame 如下:

import pandas as pd
import numpy as npdata = {'A': [1, 2, 3, 4],'B': [5, 6, 7, 8]
}df = pd.DataFrame(data)
print("原始 DataFrame:")
print(df)

输出:

原始 DataFrame:A  B
0  1  5
1  2  6
2  3  7
3  4  8
示例 1:使用布尔条件替换值

A 列中大于 2 的值替换为 NaN

result = df.where(df['A'] <= 2)
print("\n将 A 列中大于 2 的值替换为 NaN:")
print(result)

输出:

将 A 列中大于 2 的值替换为 NaN:A    B
0  1.0  5.0
1  2.0  6.0
2  NaN  NaN
3  NaN  NaN
示例 2:使用布尔条件和自定义替换值

A 列中大于 2 的值替换为 0

result = df.where(df['A'] <= 2, other=0)
print("\n将 A 列中大于 2 的值替换为 0:")
print(result)

输出:

将 A 列中大于 2 的值替换为 0:A  B
0  1  5
1  2  6
2  0  0
3  0  0
示例 3:使用布尔 DataFrame 替换值

A 列中大于 2 的值替换为 NaNB 列中大于 6 的值替换为 NaN

cond = (df['A'] <= 2) & (df['B'] <= 6)
result = df.where(cond)
print("\n将 A 列中大于 2 的值和 B 列中大于 6 的值替换为 NaN:")
print(result)

输出:

将 A 列中大于 2 的值和 B 列中大于 6 的值替换为 NaN:A    B
0  1.0  5.0
1  2.0  6.0
2  NaN  NaN
3  NaN  NaN
示例 4:使用 inplace=True 直接修改原 DataFrame

A 列中大于 2 的值替换为 0,直接修改原 DataFrame:

df.where(df['A'] <= 2, other=0, inplace=True)
print("\n直接修改原 DataFrame:")
print(df)

输出:

直接修改原 DataFrame:A  B
0  1  5
1  2  6
2  0  0
3  0  0
示例 5:使用多级索引

假设我们有一个多级索引的 DataFrame:

index = pd.MultiIndex.from_tuples([('a', 'x'), ('a', 'y'), ('b', 'x'), ('b', 'y')], names=['first', 'second'])
df = pd.DataFrame(data, index=index)
print("原始 DataFrame:")
print(df)

输出:

原始 DataFrame:A  B
first second       
a     x       1  5y       2  6
b     x       0  0y       0  0

使用 where 方法并指定 level 参数:

result = df.where(df['A'] <= 2, level='first')
print("\n使用 where 方法并指定 level 参数:")
print(result)

输出:

使用 where 方法并指定 level 参数:A    B
first second       
a     x    1.0  5.0y    2.0  6.0
b     x    NaN  NaNy    NaN  NaN
总结

pandas.DataFrame.where 方法提供了一种灵活的方式来根据条件筛选和替换 DataFrame 中的元素。你可以使用布尔条件、布尔数组或布尔 DataFrame 来指定哪些元素需要保留,哪些需要替换。通过 other 参数可以指定替换的值,默认为 NaNinplace 参数允许你选择是否直接修改原 DataFrame。这对于数据清洗和预处理非常有用。

相关文章:

【Pandas】pandas DataFrame where

Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签&#xff08;行标签和列标签&#…...

嵌入式ARM RISCV toolchain工具 梳理arm-none-eabi-gcc

嵌入式TOOLchain工具 梳理 简介 本文总结和梳理一下一些toolchain的规则和原理&#xff0c;方便后续跨平台的时候&#xff0c;给大家使用toolchain做一个参考。 解释如何理解arm-none-eabi-gcc等含义&#xff0c;以及如何一看就知道该用什么编译器。 当然如果有哪里写的不是…...

OpenBMC:BmcWeb log输出

BmcWeb的log函数定义于:http\logging.hpp 说实话,个人觉得这一版的log函数有点炫技,使用起来也没有之前的版本方便,不过也还是值的参考一下。 1.如何输出log BMCWEB_LOG_ERROR("GetAll on path {} iface {} service {} failed with code {}",objectPath, inte…...

复现SCI图像增强(Toward fast, flexible, and robust low-light image enhancement.)

运行train.py报错 > File "/home/uriky/桌面/SCI-main/SCI-main/train.py", line 105, in main > train_queue torch.utils.data.DataLoader( File "/home/uriky/anaconda3/envs/AA/lib/python3.8/site-packages/torch/utils/data/dataloader.py&q…...

深入理解C++中string的深浅拷贝

目录 一、引言 二、浅拷贝与深拷贝的基本概念 2.1 浅拷贝 2.2 深拷贝 在C 中&#xff0c; string 类的深浅拷贝有着重要的区别。 浅拷贝 深拷贝 string 类中的其他构造函数及操作 resize 构造 构造&#xff08;赋值构造&#xff09; 构造&#xff08;拼接构造&#xf…...

性能测试面试题的详细解答

以下是性能测试面试题的详细解答&#xff1a; 1. 性能测试的流程是怎样的&#xff1f; 性能测试流程通常包括以下几个步骤&#xff1a; - **需求分析**&#xff1a;明确测试目标、性能指标&#xff08;如响应时间、吞吐量等&#xff09;。 - **环境搭建**&#xff1a;搭建测试环…...

第八篇:系统分析师第三遍——3、4章

目录 一、目标二、计划三、完成情况四、意外之喜(最少2点)1.计划内的明确认知和思想的提升标志2.计划外的具体事情提升内容和标志 五、总结 一、目标 通过参加考试&#xff0c;训练学习能力&#xff0c;而非单纯以拿证为目的。 1.在复习过程中&#xff0c;训练快速阅读能力、掌…...

Unity粒子特效打包后不显示

1.粒子发mesh&#xff0c;如果打包后不显示&#xff0c;尝试勾选r/w 2.如果还不行&#xff0c;mesh重做&#xff0c;目前发现ab包打出的&#xff0c;有的mesh会出问题&#xff0c;暂时原因不详。...

PFC 是什么?

现在进行液晶电视机和等离子电视机电路分析时、故障维修时&#xff0c;都经常的提到“PFC 电路”一词&#xff0c;这 在早期的电视机中是没有的&#xff0c;早期维修电视机的师傅从来没有接触过的&#xff0c;但是 PFC 电路是目前液晶电视机 和等离子电视机中不可缺少的电路。那…...

6.5 GitHub监控系统实战:双通道采集+动态调度打造高效运维体系

GitHub Sentinel Agent 定期更新功能设计与实现 关键词:GitHub API 集成、定时任务调度、Python 爬虫开发、SMTP 邮件通知、系统稳定性保障 1. GitHub 项目数据获取功能 1.1 双通道数据采集架构设计 #mermaid-svg-ZHJIMXcMAyDHVhmV {font-family:"trebuchet ms",v…...

楼梯上下检测数据集VOC+YOLO格式5462张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5462 标注数量(xml文件个数)&#xff1a;5462 标注数量(txt文件个数)&#xff1a;5462 …...

消防营区管控:从智能仓储、装备管理、应急物资调用等多维度出发

近期&#xff0c;一系列消防安全热点事件引发了社会各界的广泛关注。某老旧城区的一场火灾&#xff0c;由于消防通道被杂物堵塞&#xff0c;消防车辆无法及时靠近火源&#xff0c;加之周边消防设施老化&#xff0c;灭火物资储备不足&#xff0c;导致火势迅速蔓延&#xff0c;造…...

Flutter 自定义插件基础

1、Flutter插件是什么&#xff1f;官方插件库 在开发Flutter应用过程中会涉及到平台相关接口调用&#xff0c;例如数据库操作、相机调用、外部浏览器跳转等业务场景。其实Flutter自身并不支持直接在平台上实现这些功能&#xff0c;而是通过插件包接口去调用指定平台API从而实现…...

解锁古籍中的气候密码,探索GPT/BERT在历史灾害研究中的前沿应用;气候史 文本挖掘 防灾减灾;台风案例、干旱案例、暴雨案例

历史灾害文献分析方法论的研究&#xff0c;是连接过去与未来的关键桥梁。通过对古籍、方志、档案等非结构化文本的系统性挖掘与量化分析&#xff0c;不仅能够重建千年尺度的灾害事件序列&#xff08;如台风、洪旱等&#xff09;&#xff0c;弥补仪器观测数据的时空局限性&#…...

【java 13天进阶Day12】XML和Dom4j,装饰模式,工厂模式,commons-io工具包,Base64

XML XML 指可扩展标记语言&#xff08;EXtensible Markup Language&#xff09;&#xff0c;由各种标记(元素标签)组成。 可扩展&#xff1a;所有的标签都是自定义的&#xff0c;可以随意扩展的&#xff0c;如 。 XML 是一种标记语言&#xff0c;很类似 HTML&#xff0c;HTML…...

vue3 Element-plus修改内置样式复现代码

笔者在修改Element-plus的内置样式时&#xff0c;遇到一点挫折&#xff0c;现提供需求场景与解决方案。 一、实现&#xff08;1&#xff09;透明弹窗可拖拽&#xff0c;且不影响点击弹窗外内容&#xff1b;&#xff08;2&#xff09;弹窗内置表格&#xff0c;表格需修改样式颜色…...

工作督导 | 具有边缘型人格障碍倾向的高危来访者,咨询师如何应对?

一个学校心理中心&#xff0c;可能同时有几十位乃至数百位同学在接受咨询&#xff0c;其中大约10-20%是重点难点个案&#xff0c;一次督导如果只能督导1-2个个案&#xff0c;不足以保障所有危重难个案的有如何处理恰当、方向正确、快速解决、高效工作&#xff0c;是学校心理咨询…...

一本通 2063:【例1.4】牛吃牧草 1005:地球人口承载力估计

Topic&#xff1a; Ideas&#xff1a; 为什么把这两道题放在一起呢&#xff1f;就是因为这两道题很类似&#xff0c;都是很简单的数学题&#xff0c;只要你会列出数学等式&#xff0c;你就学会这道题了&#xff01; 下面把计算过程展示给大家 Code&#xff1a; //2025/04/18…...

图+文+语音一体化:多模态合成数据集构建的实战与方法论

目录 图文语音一体化&#xff1a;多模态合成数据集构建的实战与方法论 一、多模态合成数据的核心价值 二、系统架构概览 三、核心模块与实现建议 ✅ 1. 文→图&#xff1a;图像合成&#xff08;Text-to-Image&#xff09; ✅ 2. 图→文&#xff1a;自动描述&#xff08;I…...

c++:c++中的输入输出(二)

1.getline getline是包含于头文件&#xff1a;<string>的函数 作用&#xff1a;读取一行字符串&#xff08;包含空格&#xff09; 使用格式&#xff1a;getline(cin,str); string a;getline(cin, a); 假设我们有一个场景是需要识别一行字符串中的字母a的个数&#xff0c;…...

UniApp + Cursor + Devbox 全栏平台开发教程:从0到完整项目打造

本文基于B站热门教程《一口气学会小程序 / App / H5开发:UniApp教程 + Cursor + Devbox》,https://www.bilibili.com/video/BV1W7QZYMEus/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=a1428945043b2df41c1896acb90d942a,进行全面扩展…...

电流模式控制学习

电流模式控制 电流模式控制&#xff08;CMC&#xff09;是开关电源中广泛使用的一种控制策略&#xff0c;其核心思想是通过内环电流反馈和外环电压反馈共同调节占空比。相比电压模式控制&#xff0c;CMC具有更快的动态响应和更好的稳定性&#xff0c;但也存在一些固有缺点。 …...

服务器架构:SMP、NUMA、MPP及Docker优化指南

文章目录 引言 一、服务器架构基础1. SMP&#xff08;对称多处理&#xff0c;Symmetric Multiprocessing&#xff09;2. NUMA&#xff08;非统一内存访问&#xff0c;Non-Uniform Memory Access&#xff09;3. MPP&#xff08;大规模并行处理&#xff0c;Massively Parallel Pr…...

人脸识别联合行为检测的办公管理新模式

基于人脸识别与行为检测的办公智能化解决方案 一、背景 在传统办公场景中&#xff0c;员工考勤管理、工位使用情况统计、安全监控等环节存在诸多痛点。例如&#xff0c;传统考勤方式如指纹打卡、刷卡等存在代打卡现象&#xff0c;考勤数据不准确&#xff1b;对于员工是否在工…...

Python 写生成 应用商店(2025版) 网页 方便收集应用 ,局域网使用

工具【1】&#xff1a;nginx 配置 nginx.conf 文件 server { listen 8080; server_name example.com; location / { root E:/BIT_Soft_2025; index index.html index.htm; } # 定义错误页面 error_page 404 /4…...

Spring 单元测试核心注解全解:@InjectMocks、@MockBean、@Mock、@Autowired 的区别与实战

在编写 Spring Boot 应用的单元测试过程中,@InjectMocks、@MockBean、@Mock 和 @Autowired 是最常用的几个注解,但它们经常被混淆或误用,导致测试失败或注入错误。 本文将从本质区别、使用场景、示例代码、对比表格等多个维度,全面解析这几者的使用方法与差异,助你写出结…...

2025年大一训练-DP1

2025年大一训练-DP1 Problem A: 动态规划算法&#xff0c;从上往下一层层找到到达对应位置的最大值&#xff0c;最底下一行maxl的最大值即为答案 #include<bits/stdc.h> using namespace std; int lst[101][101]; int maxl[101][101];int main() {int n,i,j;while(cin&g…...

【java 13天进阶Day04】常用API、正则表达式,泛型、Collection集合API

Math类的使用。 Math用于做数学运算。Math类中的方法全部是静态方法&#xff0c;直接用类名调用即可。方法&#xff1a; public static int abs(int a) 获取参数a的绝对值public static double ceil(double a) 向上取整public static double floor(double a) 向下取整public s…...

conversation_template | conversation_actors | conversation_line_template

目录 conversation_template conversation_actors conversation_line_template 实例应用 conversation_template id&#xff1a;某段谈话的唯一编号FirstLineId&#xff1a;谈话开始的第一段话的编号&#xff0c;取值来源 ConversationLine.db2 的 ID 字段TextureKitId&am…...

架构图--架构师的行军地图

架构图是架构师最重要的沟通和规划工具之一&#xff0c;它如同行军地图般指导着整个软件系统的构建与演进。本文系统性地探讨了软件架构图设计的全面方法论&#xff0c;提出横向与纵向双维度的设计框架。横向设计关注模块间的业务、数据与重要性关系&#xff0c;纵向设计则采用…...