給定一個包含多個列的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') 按 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中文網其他相關文章!