如何在 Pandas 中透過最小值選擇在 Groupby 過程中保留列?

Susan Sarandon
發布: 2024-10-25 08:18:02
原創
185 人瀏覽過

How to Preserve Columns During Groupby with Minimum Value Selection in Pandas?

在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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!