在Groupby 期間使用最小值選擇保留欄位
問題:
問題:執行長 時在pandas 資料幀上進行操作以選擇特定列具有最小值的行時,其他列經常會被無意中刪除。當需要來自這些列的附加資訊時,這可能會出現問題。
解決方案1:使用idxmin() 進行索引選擇<code class="python">df_min = df.loc[df.groupby("item")["diff"].idxmin()]</code>
要保留其他列,一種方法是使用idxmin() 取得指定列中具有最小值的元素的索引。然後可以使用這些索引從原始資料框中選擇對應的行:
解決方案2:排序並選擇第一個元素<code class="python">df_min = df.sort_values("diff").groupby("item", as_index=False).first()</code>
另一種方法是按最小值列對資料框進行排序,然後從每個組中選擇第一個元素:
範例:<code class="python">df = pd.DataFrame({ "item": [1, 1, 1, 2, 2, 2, 2, 3, 3], "diff": [2, 1, 3, -1, 1, 4, -6, 0, 2], "otherstuff": [1, 2, 7, 0, 3, 9, 2, 0, 9] }) df_min_idx = df.loc[df.groupby("item")["diff"].idxmin()] df_min_sort = df.sort_values("diff").groupby("item", as_index=False).first() print(df_min_idx) print(df_min_sort)</code>這兩種解都達到了預期的結果保留其他列,同時選擇指定列具有最小值的行:
item diff otherstuff 1 1 1 2 6 2 -6 2 7 3 0 0 item diff otherstuff 0 1 1 2 1 2 -6 2 2 3 0 0輸出:
以上是如何在 Pandas 中透過最小值選擇在 Groupby 過程中保留列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!