【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.pswp.cn/diannao/79439.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79439.shtml
英文地址,請注明出處:http://en.pswp.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…