ホームページ >バックエンド開発 >Python チュートリアル >複数の基準を使用して Pandas DataFrame とシリーズを効率的にフィルタリングする方法
Pandas でデータを操作する場合、多くの場合、複数の条件に基づいてフィルターする必要があります。従来のアプローチでは複数の reindex() 操作を連鎖させる必要がありますが、この手法では新しいオブジェクトが作成され、データがコピーされるため、非効率になります。
代替アプローチは、ブール型インデックスを利用することで、大幅に効率的です。 Pandas ではブール値のインデックス作成が可能で、True/False 評価に基づいてデータを直接サブセット化できます。
<code class="python">df.loc[df['col1'] >= 1, 'col1']</code>
この手法により、新しいオブジェクトの作成や不必要なコピーが回避され、より効率的なデータのフィルタリング手段が提供されます。
効率をさらに高めるために、この目的のためのヘルパー関数を作成できます:
<code class="python">def b(x, col, op, n): return op(x[col],n) def f(x, *b): return x[(np.logical_and(*b))]</code>
これらのヘルパー関数を使用すると、複数のフィルターの適用が簡単になります:
<code class="python">b1 = b(df, 'col1', ge, 1) b2 = b(df, 'col1', le, 1) f(df, b1, b2)</code>
Pandas バージョンの場合0.13 以降では、専用のクエリ メソッドにより、最適化に numexpr を利用して複数のフィルターを適用するさらに効率的な方法が提供されます:
<code class="python">df.query('col1 <= 1 & 1 <= col1')</code>
以上が複数の基準を使用して Pandas DataFrame とシリーズを効率的にフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。