【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。这对于数据清洗和预处理非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++代码优化

前段时间写了一些代码&#xff0c;但是在运算过程中发现有些代码可以进行改进以提高运行效率&#xff0c;尤其是与PCL相关的部分&#xff0c;可以进行大幅度提高&#xff0e;特意在此进行记录&#xff0c;分享给大家&#xff0c;也供自己查看&#xff0e; pcl::PointCloud< …

RAG-分块策略

分块策略在检索增强生成&#xff08;RAG&#xff09;方法中起着至关重要的作用&#xff0c;它使文档能够被划分为可管理的部分&#xff0c;同时保持上下文。每种方法都有其特定的优势&#xff0c;适用于特定的用例。将大型数据文件拆分为更易于管理的段是提高LLM应用效率的最关…

Linux网络编程 深入解析TFTP协议:基于UDP的文件传输实战

知识点1【TFTP的概述】 学习通信的基本&#xff1a;通信协议&#xff08;具体发送上面样的报文&#xff09;、通信流程&#xff08;按照什么步骤发送&#xff09; 1、TFTP的概述 tftp&#xff1a;简单文件传输协议&#xff0c;**基于UDP&#xff0c;**不进行用户有效性验证 …

「数据可视化 D3系列」入门第十一章:力导向图深度解析与实现

D3.js 力导向图深度解析与实现 力导向图核心概念 力导向图是一种通过物理模拟来展示复杂关系网络的图表类型&#xff0c;特别适合表现社交网络、知识图谱、系统拓扑等关系型数据。其核心原理是通过模拟粒子间的物理作用力&#xff08;电荷斥力、弹簧引力等&#xff09;自动计…

音频格式转换

1. 下载ffmpeg https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-7.1.1-full_build.7z 2. 配置ffmpeg环境变量 3.安装pydub pip install pydub 4.编写转化工具代码 from pydub import AudioSegment def convertM4aToWav(m4a,wav):sound AudioSegment.from_file(m4a, f…

基于spring boot 集成 deepseek 流式输出 的vue3使用指南

本文使用deepseek API接口流式输出的文章。 环境要求 jdk17 spring boot 3.4 代码如下: package com.example.controller;import jakarta.annotation.PostConstruct; import org.springframework.ai.chat.messages.AssistantMessage; import org.springframework.ai.chat.mes…

微博辐射源和干扰机

微波辐射源和干扰机是电子战和通信领域中的两个重要概念&#xff0c;它们在军事、民用及科研中具有广泛应用。以下是两者的详细解析及其相互关系&#xff1a; ‌1. 微波辐射源‌ ‌定义‌&#xff1a; 微波辐射源是指能够主动发射微波&#xff08;频率范围通常为 ‌300 MHz&…

2025年4月16日华为留学生笔试第三题300分

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 03. 智慧城市网络优化 问题描述 K小姐是一家智慧城市服务提供商的网络架构师。她负责规划城市边缘计算节点的布局,以提供更快速、稳定的网络服务。 城市内有 n n

多线程编程的简单案例——单例模式[多线程编程篇(3)]

目录 前言 1.wati() 和 notify() wait() 和 notify() 的产生原因 如何使用wait()和notify()? 案例一:单例模式 饿汉式写法: 懒汉式写法 对于它的优化 再次优化 结尾 前言 如何简单的去使用jconsloe 查看线程 (多线程编程篇1)_eclipse查看线程-CSDN博客 浅谈Thread类…

pytorch基本操作2

torch.clamp 主要用于对张量中的元素进行截断&#xff08;clamping&#xff09;&#xff0c;将其限制在一个指定的区间范围内。 函数定义 torch.clamp(input, minNone, maxNone) → Tensor 参数说明 input 类型&#xff1a;Tensor 需要进行截断操作的输入张…

一次制作参考网杂志的阅读书源的实操经验总结(附书源)

文章目录 一、背景介绍二、书源文件三、详解制作书源&#xff08;一&#xff09;打开Web服务&#xff08;二&#xff09;参考网结构解释&#xff08;三&#xff09;阅读书源 基础&#xff08;四&#xff09;阅读书源 发现&#xff08;五&#xff09;阅读书源 详细&#xff08;六…

并发设计模式实战系列(2):领导者/追随者模式

&#x1f31f; ​大家好&#xff0c;我是摘星&#xff01;​ &#x1f31f; 今天为大家带来的是并发设计模式实战系列&#xff0c;第二章领导者/追随者&#xff08;Leader/Followers&#xff09;模式&#xff0c;废话不多说直接开始~ 目录 领导者/追随者&#xff08;Leader/…

自求导实现线性回归与PyTorch张量详解

目录 前言一、自求导的方法实现线性回归1.1自求导的方法实现线性回归的理论讲解1.1.1 线性回归是什么&#xff1f;1.1.2线性回归方程是什么&#xff1f;1.1.3散点输入1.2参数初始化1.2.1 参数与超参数1.2.1.1 参数定义1.2.1.2 参数内容1.2.1.3 超参数定义1.2.1.4 超参数内容1.…

2025年机电一体化、机器人与人工智能国际学术会议(MRAI 2025)

重要信息 时间&#xff1a;2025年4月25日-27日 地点&#xff1a;中国济南 官网&#xff1a;http://www.icmrai.org 征稿主题 机电一体化机器人人工智能 传感器和执行器 3D打印技术 智能控制 运动控制 光电系统 光机电一体化 类人机器人 人机界面 先进的运动控制 集成制造系…

线性代数 | 知识点整理 Ref 3

注&#xff1a;本文为 “线性代数 | 知识点整理” 相关文章合辑。 因 csdn 篇幅合并超限分篇连载&#xff0c;本篇为 Ref 3。 略作重排&#xff0c;未整理去重。 图片清晰度限于引文原状。 如有内容异常&#xff0c;请看原文。 《线性代数》总复习要点、公式、重要结论与重点释…

CFD中的动量方程非守恒形式详解

在计算流体力学&#xff08;CFD&#xff09;中&#xff0c;动量方程可以写成守恒形式和非守恒形式&#xff0c;两者在数学上等价&#xff0c;但推导方式和应用场景不同。以下是对非守恒形式的详细解释&#xff1a; 1. 动量方程的守恒形式 首先回顾守恒形式的动量方程&#xff…

Leetcode 1504. 统计全 1 子矩形

1.题目基本信息 1.1.题目描述 给你一个 m x n 的二进制矩阵 mat &#xff0c;请你返回有多少个 子矩形 的元素全部都是 1 。 1.2.题目地址 https://leetcode.cn/problems/count-submatrices-with-all-ones/description/ 2.解题方法 2.1.解题思路 单调栈 时间复杂度&…

【Docker】运行错误提示 unknown shorthand flag: ‘d‘ in -d ----详细解决方法

使用docker拉取Dify的时候遇到错误 错误提示 unknown shorthand flag: d in -dUsage: docker [OPTIONS] COMMAND [ARG...]错误原因解析 出现 unknown shorthand flag: d in -d 的根本原因是 Docker 命令格式与当前版本不兼容&#xff0c;具体分为以下两种情况&#xff1a; 新…

华为OD机试真题——攀登者2(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析&#xff1b; 并提供Java、python、JavaScript、C、C语言、GO六种语言的最佳实现方式&#xff01; 2025华为OD真题目录全流程解析/备考攻略/经验分享 华为OD机试真题《攀登者2…

qt硬件与软件通信中 16进制与十进制转化

1. 首先上代码, 这是在qt语言上的操作 截取 01 03 0C 00 00 00 00 00 00 00 0C 00 0C 00 0C 93 70 这串16进制数值进行处理&#xff0c;截取这样一段内容 00 0C 00 0C 00 0C 字节数组转字符串。从bytearray数组转换为string. QString CustomTcpSocket::recieveInfo() {QByteArr…