首頁  >  文章  >  後端開發  >  如何使用 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') 按 A 列對 DataFrame 進行分組。然後,它將 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn