ホームページ >バックエンド開発 >Python チュートリアル >複数の基準を使用して Pandas DataFrame とシリーズを効率的にフィルタリングする方法

複数の基準を使用して Pandas DataFrame とシリーズを効率的にフィルタリングする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-20 12:18:30260ブラウズ

How to Efficiently Filter Pandas DataFrames and Series Using Multiple Criteria

Pandas のデータフレームとシリーズに複数のフィルターを効率的に適用する

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。