在 Pandas DataFrame 中過濾資料
Fariba Laiq
2023年1月30日
2022年5月16日
本教程將演示基於單個或多個條件過濾 Pandas DataFrame 中的資料。
布林索引意味著選擇資料子集或根據某些條件過濾資料。我們處理 DataFrame 中資料的實際值,而不是它們的行或列標籤或整數位置。
布林向量用於過濾布林索引中的資料。括號可用於對涉及運算子的多個條件進行分組,例如|
(OR
)、&
(AND
)、==
(EQUAL
) 和 ~
(NOT
)。
基於單一條件過濾 Pandas DataFrame 中的資料
我們可以通過應用單個條件來使用單個列的值過濾資料。
在下面的程式碼中,我們有學生的資料,我們通過將單個條件應用於 Department
值來過濾記錄。只有那些係為 CS
的學生的記錄才會顯示。
示例程式碼:
#Python 3.x
import pandas as pd
df=pd.read_csv('Student.csv')
display(df)
df_filtered = df[(df['Department']=='CS')]
display(df_filtered)
輸出:
根據多個條件過濾 Pandas DataFrame 中的資料
在某些情況下,我們還可以應用多個條件從單個列中選擇資料。
如果我們只想顯示那些分數大於 60 但小於 90 的學生的記錄,我們將使用由 &
運算子連線的多個條件。
要記住的重要一點是分別使用運算子&
、|
、~
而不是 AND
、OR
、NOT
。
示例程式碼:
#Python 3.x
import pandas as pd
df=pd.read_csv('Student.csv')
display(df)
df_filtered = df[(df['Marks']>60)& (df['Marks']<90)]
display(df_filtered)
輸出:
根據多列值過濾 Pandas DataFrame 中的資料
我們還可以使用基於多列值的條件過濾資料。
在下面的程式碼中,我們過濾了記錄,只顯示部門為 EE
且標記高於或等於 80 的記錄。我們使用括號對多個條件進行分組。
每當我們過濾來自多個列的資料時,我們總是應用多個條件。
示例程式碼:
#Python 3.x
import pandas as pd
df=pd.read_csv('Student.csv')
display(df)
df_filtered = df[(df['Department']=='EE')& (df['Marks']>=80)]
display(df_filtered)
輸出:
Author: Fariba Laiq
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn