複数の列を含む Pandas DataFrame を指定すると、タスクは特定することです別の列の一意の値ごとに、特定の列の最小値を持つ行を選択します。たとえば、列 A、B、C を持つ DataFrame で、各 A 値に対する最小の B 値を持つ行を取得したいとします。
単純なこの問題を解決する効率的なアプローチは、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 サイトの他の関連記事を参照してください。