ホームページ  >  記事  >  バックエンド開発  >  Pandas GroupBy を使用して列内の最小値を持つ行を検索する方法

Pandas GroupBy を使用して列内の最小値を持つ行を検索する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-29 00:16:29977ブラウズ

How to Find Rows with the Minimum Value in a Column Using Pandas GroupBy?

Pandas GroupBy を使用した列内の最小値を持つ行の選択

問題のシナリオ

複数の列を含む Pandas DataFrame を指定すると、タスクは特定することです別の列の一意の値ごとに、特定の列の最小値を持つ行を選択します。たとえば、列 A、B、C を持つ DataFrame で、各 A 値に対する最小の B 値を持つ行を取得したいとします。

GroupBy と idxmin を使用した解決策

単純なこの問題を解決する効率的なアプローチは、Pandas の groupby 関数と idxmin 関数を利用することです。 groupby 関数は指定された列ごとに行をグループ化し、idxmin は別の列の最小値を持つ行のインデックスを返します。

<code class="python">df.loc[df.groupby('A').B.idxmin()]</code>

このコード行により、目的の結果が得られます。まず、groupby('A') を使用して DataFrame を列 A でグループ化します。次に、B.idxmin() 関数を各グループに適用し、そのグループ内の最小 B 値を持つ行のインデックスを返します。最後に、loc 関数を使用して、B の最小値に対応する行を選択します。

デモ

次の DataFrame について考えます。

<code class="python">df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 2],
                   'B': [4, 5, 2, 7, 4, 6],
                   'C': [3, 4, 10, 2, 4, 6]})</code>

ソリューション コードを適用すると、次の結果が得られます。次の結果:

   A  B   C
2  1  2  10
4  2  4   4

この出力には、一意の A 値ごとの最小 B 値 (A=1 の場合は 2、A=2 の場合は 4) を含む行が表示されます。

追加の考慮事項

代わりに、reset_index(drop=True) を使用して、結果の DataFrame からインデックス列を削除できます。

<code class="python">df.loc[df.groupby('A').B.idxmin()].reset_index(drop=True)</code>

これにより、必要な列のみを含む DataFrame が得られます。 .

以上がPandas GroupBy を使用して列内の最小値を持つ行を検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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