Pandas query() 方法詳解

Pandas query() 方法詳解

query() 是 Pandas 中一個非常強大的方法,它允許你使用字符串表達式來篩選數據行。這種方法比傳統的布爾索引更簡潔、更易讀。

基本語法

df.query(expr, inplace=False, **kwargs)
  • expr: 查詢字符串表達式
  • inplace: 是否原地修改 DataFrame (默認為 False)
  • **kwargs: 其他關鍵字參數
  • 對于大型 DataFrame,query()?通常比布爾索引快,因為它在底層使用了 numexpr 庫
  • 但對于小型 DataFrame,傳統布爾索引可能更快

基本用法

1. 簡單條件查詢

import pandas as pddf = pd.DataFrame({'A': range(1, 6),'B': range(10, 60, 10),'C': ['a', 'b', 'c', 'd', 'e']
})# 查詢 A 列大于 2 的行
result = df.query('A > 2')

2. 多條件查詢

# AND 條件
df.query('A > 2 & B < 50')# OR 條件
df.query('A > 4 | B == 20')# 使用括號明確優先級
df.query('(A > 2) & (B < 50)')

3. 字符串條件查詢

# 等于
df.query('C == "a"')# 不等于
df.query('C != "a"')# 包含在列表中
df.query('C in ["a", "b", "c"]')# 不包含在列表中
df.query('C not in ["a", "b"]')

高級用法

1. 使用變量 (@符號)

min_val = 3
max_val = 5df.query('A >= @min_val & A <= @max_val')

2. 列名包含空格或特殊字符

df = pd.DataFrame({'A value': [1, 2, 3], 'B@value': [4, 5, 6]})# 使用反引號包裹列名
df.query('`A value` > 1 & `B@value` < 6')

3. 使用 DataFrame 屬性

# 查詢索引
df.query('index > 2')# 查詢列長度
df.query('A.str.len() > 1')  # 如果A是字符串列

4. 使用函數

# 使用內置函數
df.query('A.abs() > 2')  # 絕對值# 使用自定義函數
def my_func(x):return x * 2df.query('A > @my_func(2)')

性能考慮

  • 對于大型 DataFrame,query() 通常比布爾索引快,因為它在底層使用了 numexpr 庫
  • 但對于小型 DataFrame,傳統布爾索引可能更快

與傳統布爾索引的比較

# 傳統布爾索引
df[(df['A'] > 2) & (df['B'] < 50)]# query 方法
df.query('A > 2 & B < 50')

query() 的優勢在于:

  1. 語法更簡潔
  2. 不需要重復寫 DataFrame 名稱
  3. 對于復雜條件更易讀

注意事項

  1. 表達式必須返回布爾值
  2. 列名中的特殊字符需要用反引號包裹
  3. 使用變量時需要用 @ 符號
  4. 表達式中的字符串需要用雙引號包裹

實際應用示例

# 創建示例數據
data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'age': [25, 30, 35, 40, 45],'salary': [50000, 60000, 70000, 80000, 90000],'department': ['HR', 'IT', 'IT', 'Finance', 'HR']
}
df = pd.DataFrame(data)# 查詢年齡在30-40之間且部門為IT或HR的員工
result = df.query('(age >= 30 & age <= 40) & department in ["IT", "HR"]')# 查詢薪資高于平均薪資的員工
avg_salary = df['salary'].mean()
result = df.query('salary > @avg_salary')

query() 方法是 Pandas 中非常實用的功能,特別適合需要編寫復雜篩選條件的場景,能夠顯著提高代碼的可讀性和簡潔性。


例題

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92556.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92556.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92556.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux系統層IO

1.c語言文件操作 fopen&#xff1a;打開文件&#xff0c;模式 "w"&#xff08;寫&#xff0c;覆蓋&#xff09;或 "r"&#xff08;讀&#xff09;。 fwrite&#xff1a;fwrite(data, size, count, fp)&#xff0c;按 size 字節寫入 count 次數據。 fread…

QT中的trimmed() 方法(1)

QT中的trimmed() 方法&#xff08;2&#xff09; trimmed() 是 Qt 框架 中 QString 類提供的一個方法&#xff0c;用于 去除字符串首尾的空白字符&#xff08;whitespace characters&#xff09;。它的作用類似于標準 C 中的 std::string 的 trim 操作&#xff0c;但專為 Qt 的…

動漫軟件集合分享

通過網盤分享的文件&#xff1a;動漫軟件 鏈接: https://pan.baidu.com/s/1TD_OmaAZksfFxJ4PW6rS-w?pwd1234 提取碼: 1234 打印動漫.apk 當鳥動漫.apk 動漫共和國【OmoFun復活】.apk 咕咕香.apk 黑貓動漫.apk 團次元【推薦】.apk 橘漫.apk 曼波.apk 萌國.apk 趣動漫.apk 三…

Mysql與Ooracle 索引失效場景對比

MySQL 和 Oracle 作為主流關系型數據庫&#xff0c;其索引失效的場景既有共性&#xff0c;也因底層優化器、索引類型支持等差異存在不同。以下從常見索引失效場景對比兩者的表現及原因&#xff1a;一、索引列上使用函數 / 表達式共性&#xff1a;若直接在索引列上使用函數或表達…

【unity知識】unity使用AABB(軸對齊包圍盒)和OBB(定向包圍盒)優化碰撞檢測

文章目錄前言一、AABB&#xff08;軸對齊包圍盒&#xff09;1、基本概念2、數學表示3、Unity中的實現4、實際應用示例二、OBB&#xff08;有向包圍盒&#xff09;1、Physics.ComputePenetration (Unity 物理引擎)1.1 基本概念1.2 Unity中的實現1.3 實際應用示例2、OBB (SAT) 手…

Numpy科學計算與數據分析專題

Numpy科學計算與數據分析 1. Numpy入門&#xff1a;數組操作與科學計算基礎 2. Numpy入門&#xff1a;多平臺安裝與基礎環境配置 3. Numpy數組創建與應用入門 4. Numpy數組屬性入門&#xff1a;形狀、維度與大小 5. Numpy數組索引與切片入門 6. Numpy數組操作入門&#xff1a;…

齊護機器人小智AI_MCP圖形化編程控制Arduino_ESP32

齊護機器人小智AI_MCP圖形化編程控制Arduino_ESP32 齊護AiTall在項目實踐里&#xff0c;我們常常期望達成這樣一種場景&#xff1a;借助智能體&#xff08;例如小智 AI&#xff09;來遠程操控其他開發板上的設備&#xff0c;這類似于智能家居系統中智能音箱與各類家電的互動模式…

CPO-SVM分類預測+特征貢獻SHAP分析,通過特征貢獻分析增強模型透明度,Matlab代碼實現,引入SHAP方法打破黑箱限制,提供全局及局部雙重解釋視角

代碼功能 該Matlab代碼實現了一個基于CPO-SVM冠豪豬算法優化支持向量機的數據分類模型&#xff0c;結合了SHAP可解釋性分析&#xff0c;CPO選擇最佳的SVM參數c和g。 SVM模型有兩個非常重要的參數C與gamma。其中 C是懲罰系數&#xff0c;即對誤差的寬容度。c越高&#xff0c;說明…

Failed to restart docker.service: Unit docker.service is masked.

docker.service 被標記為 "masked" 意味著 systemd 已阻止該服務被啟動或運行。這通常發生在 Docker Desktop 安裝過程中,因為它使用自己的服務管理機制。以下是解決方法: 解決方案: 解除服務的 mask 狀態: bash sudo systemctl unmask docker.service sudo sys…

2025 藍橋杯C/C++國B 部分題解

P12836 [藍橋杯 2025 國 B] 翻倍 題目描述 給定 nnn 個正整數 A1,A2,…,AnA_1, A_2, \ldots, A_nA1?,A2?,…,An?&#xff0c;每次操作可以選擇任意一個數翻倍。 請輸出讓序列單調不下降&#xff0c;也就是每個數都不小于上一個數&#xff0c;最少需要操作多少次&#xff1f;…

os標準庫

os標準庫os包提供了操作系統函數&#xff0c;但和操作系統無關。 os包的接口規定為在所有操作系統中都是一致的。 設計為Unix風格的。1. 權限說明 os標準庫有大量的文件操作&#xff0c;在創建文件等操作中&#xff0c;需要指的perm。 在go語言中perm是一個uint32類型 在go語言…

QtC++ 中使用 qtwebsocket 開源庫實現基于websocket的本地服務開發詳解

前言 當前實時通信功能越來越受到重視&#xff0c;無論是在線聊天、實時數據監控還是多人協作工具&#xff0c;都離不開高效、穩定的實時通信技術。WebSocket 作為一種全雙工通信協議&#xff0c;為實時通信提供了良好的解決方案。而在 QtC 開發環境中&#xff0c;qtwebsocket …

小程序實時保存優化

背景。避免數據存儲后丟失。要求實時保存。問題&#xff1a;保存時出現卡斷&#xff0c;輸入的內容會被抹除。問題原因。輸入頻繁速度塊&#xff0c;會影響cpu處理速度。解決方案。用戶停止輸入500ms后開始保存&#xff0c;否則不保存。這里是保存方法&#xff1a;當500ms以內有…

國產化Excel處理組件Spire.XLS教程:使用 C# 將 DataTable 導出為 Excel 文件

在 C# 中將 DataTable 導出為 Excel 文件&#xff0c;是 .NET 開發中常見的任務&#xff0c;廣泛應用于報表生成、日志導出、系統間數據共享等場景。通過使用獨立的組件庫&#xff0c;開發者可以輕松將 DataTable 數據寫入 Excel 文件&#xff0c;并應用格式設置&#xff0c;生…

C語言學習筆記——編譯和鏈接

目錄1 C程序的執行流程2 翻譯環境2.1 預編譯2.2 編譯2.2.1 詞法分析2.2.2 語法分析2.2.3 語法分析2.3 匯編2.4 鏈接1 C程序的執行流程 用戶編寫好的C程序不能直接被計算機識別并執行&#xff0c;在執行前&#xff0c;要先將源文件和頭文件進行編譯&#xff0c;生成目標文件&am…

Flink-1.19.0源碼詳解9-ExecutionGraph生成-后篇

《Flink-1.19.0源碼詳解8-ExecutionGraph生成-前篇》前篇已從Flink集群端調度開始解析ExecutionGraph生成的源碼&#xff0c;解析了ExecutionGraph的ExecutionJobVertex節點、ExecutionVertex節點、IntermediateResult數據集、IntermediateResultPartition數據集分區與封裝Task…

19、閾值分割+blob分析

目錄 一、仿射變換 1.變換矩陣 2.在矩陣的基礎上添加各種變換形式 3.開始變換 4.計算變換矩陣參數 新算子 二、閾值分割 新算子 三、blob分析案例 1.焊點 2.石頭 3.木材 4.車牌 5.骰子 新算子 一、仿射變換 1.變換矩陣 // 產生仿射變換矩陣hom_mat2d_identity…

破解 Django N+1 查詢困境:使用 select_related 與 prefetch_related 實踐指南

破解 Django N+1 查詢困境:使用 select_related 與 prefetch_related 實踐指南 開篇引入 數據庫查詢性能常常是 Web 應用性能瓶頸中的重中之重。Django ORM 以簡潔直觀的 API 層將 Python 代碼與數據庫打通,卻也可能因默認的惰性加載帶來 N+1 查詢問題,造成不必要的網絡往…

深入解析K-means聚類:從原理到調優實戰

一、聚類分析與K-means的核心價值在無監督學習領域&#xff0c;聚類分析是探索數據內在結構的核心技術。?K-means算法因其簡潔高效成為最廣泛使用的聚類方法&#xff0c;在客戶分群、圖像壓縮、生物信息學等領域應用廣泛。其核心目標是將數據集劃分為K個簇&#xff0c;實現“簇…

數據結構基礎:哈希表、排序和查找算法

目錄 一、哈希表 1.哈希算法 2.哈希碰撞 3.哈希表 4.哈希表相關操作 哈希表插入 哈希表遍歷 元素查找 哈希表銷毀 二、排序算法 1. 排序算法對比 2. 排序算法實現 冒泡排序 選擇排序 插入排序 希爾排序 快速排序 三、查找算法 1. 查找算法對比 2. 查找算法實…