Pandas提供了多種過濾資料的方法,包括reindex()、apply()和map() 。然而,當應用多個過濾器時,效率就成為一個問題。
為了優化過濾,請考慮使用布林索引。 Pandas 和 Numpy 都支援布林索引,它直接對底層資料數組進行操作,而不創建不必要的副本。
下面是布林索引的範例:
df.loc[df['col1'] >= 1, 'col1']
此表達式返回僅包含「col1」欄位中的值大於或等於1 的行的Pandas Series。
To應用多個篩選器,使用邏輯運算子「&」(AND)和「|」 (或)。例如:
df[(df['col1'] >= 1) & (df['col1'] <=1 )]
此表達式傳回一個DataFrame,僅包含列'col1' 中的值在1 和1 之間(含1 和1)的行。
For輔助函數,考慮定義採用 DataFrame 並傳回布林系列的函數,讓您可以使用邏輯運算子組合多個篩選器。
def b(x, col, op, n):
return op(x[col],n)
def f(x, *b):
return x[(np.logical_and(*b))]
Pandas 0.13 引入了 query() 方法,它提供了一種更有效的方式來表達複雜的過濾條件。假設列標識符有效,以下程式碼根據多個條件過濾DataFrame df:
df.query('col1 <= 1 & 1 <= col1')
總之,布爾索引提供了一種將多個過濾器應用於Pandas DataFrame 或Series 的有效方法,而無需建立不必要的副本。使用邏輯運算子和輔助函數組合多個篩選器以實現擴充功能。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3