簡介
在數據分析的過程中,數據的篩選和過濾很常見。pandas的query函數可以方便地進行篩選和過濾,提高數據分析的效率。本文將詳細介紹query函數的使用方法和注意事項。
query函數的使用方法
基本語法
query函數的基本語法是:DataFrame.query(expr)
其中,expr為字符串類型的查詢表達式,可以包含變量和運算符。
查詢表達式
query函數中的查詢表達式是一個字符串,可以使用以下運算符:
比較運算符
比較運算符有:==, !=, >, >=, <, <=
。比如,要選取df表中col1等於1的行:
df.query("col1 == 1")
邏輯運算符
邏輯運算符有:&& (and), || (or), ~ (not)
。比如,要選取col1等於1並且col2等於2的行:
df.query("col1 == 1 && col2 == 2")
in運算符
in運算符用於選取列中符合條件的行,語法為in [list]
。比如,要選取col1在列表[1, 2, 3]中的行:
df.query("col1 in [1, 2, 3]")
字符串方法
query函數還支持對字符串列進行操作。可以使用字符串方法,例如str.contains()
,str.startswith()
,str.endswith()
等來篩選行。比如,選取col1列中以a開頭的行:
df.query("col1.str.startswith('a')")
變量
變量在查詢表達式中使用$符號引用。比如,要選取變量x中的值為1的行:
x = 1
df.query("col1 == $x")
注意事項
在使用query函數時,需要注意以下幾點:
列名和函數名的引用
在query函數中引用列名和函數名時,需要使用反引號(`)。
df.query("`my column` == 1")
字符串和數字的區別
在query函數中,字符串和數字的引用方式是不同的。字符串需要使用引號,而數字不需要。比如,要選取col1等於字符串’1’的行:
df.query("col1 == '1'")
如果要選取col1等於數字1的行,則不需要引號:
df.query("col1 == 1")
特殊字符的轉義
在query函數中,如果查詢表達式中出現了特殊字符,需要進行轉義。例如,要選取所有包含字符(的行:
df.query("`my column`.str.contains('\(')")
完整示例
以下是一個完整的示例代碼,展示如何使用query函數選取數據。
import pandas as pd
import numpy as np
df = pd.DataFrame({'col1': [1, 2, 3, 4],
'col2': [2, 3, 4, 5],
'col3': ['abc', 'def', 'ghi', 'jkl']})
# 選取col1等於1和col2等於2的行
df.query("col1 == 1 && col2 == 2")
# 選取col1在列表[1, 2, 3]中的行
df.query("col1 in [1, 2, 3]")
# 選取col3包含字符g的行
df.query("`col3`.str.contains('g')")
# 選取col2大於等於3的行
df.query("col2 >= 3")
原創文章,作者:EWMTT,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/317018.html