Pandas 是一個流行的 Python 資料操作庫,提供了過濾 DataFrame 和 Series 物件的有效方法。當需要連續套用多個篩選器時,必須最佳化流程以避免不必要的資料複製。
使用 reindex() 的傳統方法會導致資料重複和對於大型資料集來說效率很低。布林索引是 Pandas 和 NumPy 的一項功能,提供了更快的替代方案。
考慮以下範例:
<code class="python">import pandas as pd df = pd.DataFrame({'col1': [0, 1, 2], 'col2': [10, 11, 12]}) def b(x, col, op, n): return op(x[col],n) def f(x, *b): return x[(np.logical_and(*b))] b1 = b(df, 'col1', ge, 1) b2 = b(df, 'col1', le, 1) filtered_df = f(df, b1, b2)</code>
此方法使用布林索引來有效地執行過濾操作。 b 函數建立 Boolean Series 對象,f 函數使用 NumPy 的邏輯運算子將它們組合起來。結果是一個新的 DataFrame,其中僅包含滿足指定條件的行。
在 Pandas 0.13 及更高版本中,查詢方法提供了顯式的替代方法結合佈林級數。它利用 NuMexpr 進行高效評估,並提供更簡單的語法:
<code class="python">filtered_df = df.query('col1 <= 1 & 1 <= col1')</code>
針對 Series 物件描述的技術可以輕鬆擴展到 DataFrame。您套用的每個篩選器都會作用於原始 DataFrame,逐步縮小結果範圍。
透過利用布林索引和 Pandas 的最佳化演算法,您可以有效地將多個過濾器應用於資料結構,而不會影響效能。
以上是如何使用布林索引有效過濾 Pandas 資料結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!