ホームページ >データベース >mysql チュートリアル >Pandas の条件付きフィルタリングを使用して SQL の GROUP BY HAVING 機能を実現するにはどうすればよいですか?

Pandas の条件付きフィルタリングを使用して SQL の GROUP BY HAVING 機能を実現するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-10 17:35:41513ブラウズ

How to Achieve SQL's GROUP BY HAVING Functionality with Pandas Conditional Filtering?

Pandas データ グループ フィルタリング: SQL の GROUP BY HAVING

と同等

データ分析では、データグループに適用される条件に基づいてデータをフィルタリングすることが必要になることがよくあります。 SQL では、HAVING 句を使用してこのタイプの条件付きフィルタリングが可能になります。 Pandas では、groupby 操作と filter 操作を組み合わせて使用​​することで、同様の機能を実現できます。

Pandas でグループ化されたデータにフィルターを適用するには、groupby オブジェクトで提供されるフィルター メソッドを使用できます。このメソッドは関数を入力として受け取り、それを各グループに適用します。関数がグループに対して True を返した場合、そのグループは保持され、そうでない場合は除外されます。

次の例を考えてみましょう:

<code class="language-python">import pandas as pd

df = pd.DataFrame([[1, 2], [1, 3], [5, 6]], columns=['A', 'B'])

# 按列 A 分组数据框
g = df.groupby('A')

# 过滤以包含超过 1 行的组
filtered_df = g.filter(lambda x: len(x) > 1)

print(filtered_df)</code>

出力:

<code>   A  B
0  1  2
1  1  3</code>

この例では、groupby 操作により、列 A の個別の値ごとにグループ オブジェクトが作成されます。次に、フィルター メソッドが各グループ オブジェクトに適用され、関数 len(x) を使用してグループを保持するか除外するかを決定します。この例では、複数の行を持つグループが保持され、フィルター処理されたデータ フレームが生成されます。

ブール値を返す限り、より複雑なフィルター関数を作成することもできます。たとえば、列 B の値の合計に基づいてグループをフィルターするには、次を使用します:

<code class="language-python">filtered_df = g.filter(lambda x: x['B'].sum() == 5)</code>

フィルター関数でグループ化に使用される列にアクセスできない潜在的なバグがある可能性があることに注意してください。回避策の 1 つは、列名を使用してデータフレームを手動でグループ化することです。

以上がPandas の条件付きフィルタリングを使用して SQL の GROUP BY HAVING 機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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