首頁 > 後端開發 > Python教學 > 如何在 Pandas GroupBy 操作中找到最大計數的行?

如何在 Pandas GroupBy 操作中找到最大計數的行?

Susan Sarandon
發布: 2024-12-29 19:16:16
原創
140 人瀏覽過

How to Find Rows with the Maximum Count in Pandas GroupBy Operations?

取得Pandas 組中計數最大的行

問題:

問題:

問題:

問題:

max_counts = df.groupby(['Sp', 'Mt'])['count'].max()
登入後複製

問題:

問題:

idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
登入後複製

解:

第1 步:找出每組的最大計數

決定每個組別的最大計數組,使用groupby() 和max()函數:
result = df[idx]
登入後複製

這將建立包含每個組的最大計數的系列。

步驟 2:辨識具有最大計數的行

取得原始 DataFrame中具有最大計數的行的索引,使用transform()方法:

df = pd.DataFrame({
    'Sp': ['MM1', 'MM1', 'MM1', 'MM2', 'MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S1', 'S1', 'S3', 'S3', 'S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['a', 'n', 'cb', 'mk', 'bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [3, 2, 5, 8, 10, 1, 2, 2, 7]
})
登入後複製
這將建立一個布林系列,其中True表示具有最大值的行

第3步:根據最大計數過濾行

   Sp Mt Value  count
0  MM1 S1     a      3
2  MM1 S3    cb      5
3  MM2 S3    mk      8
4  MM2 S4    bg     10
8  MM4 S2   uyi      7
登入後複製

最後,使用布林索引過濾DataFrame以僅選擇具有最大計數的行:

這將傳回一個新的 DataFrame,其中僅包含每個資料框中「count」列具有最高值的行組。
df = pd.DataFrame({
    'Sp': ['MM2', 'MM2', 'MM4', 'MM4', 'MM4'],
    'Mt': ['S4', 'S4', 'S2', 'S2', 'S2'],
    'Value': ['bg', 'dgd', 'rd', 'cb', 'uyi'],
    'count': [10, 1, 2, 8, 8]
})
登入後複製

示例:

   Sp Mt Value  count
4  MM2 S4    bg     10
7  MM4 S2    cb      8
8  MM4 S2   uyi      8
登入後複製

示例1:

輸出:範例2 :輸出:注意:如果組內的多行有最大計數,所有這些行都將被傳回。

以上是如何在 Pandas GroupBy 操作中找到最大計數的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板