首頁 > 後端開發 > Python教學 > 如何在 Pandas 中尋找組內具有最大計數值的行?

如何在 Pandas 中尋找組內具有最大計數值的行?

Susan Sarandon
發布: 2024-12-26 03:59:09
原創
1044 人瀏覽過

How to Find Rows with Maximum Count Values within Groups in Pandas?

分組資料並擷取具有最大計數值的行

要確定群組內具有最大計數值的行,可以使用groupby 操作pandas DataFrame。

考慮以下內容DataFrame:

Sp Mt Value count
MM1 S1 a 3
MM1 S1 n 2
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM2 S4 dgd 1
MM4 S2 rd 2
MM4 S2 cb 2
MM4 S2 uyi 7

範例1:

我們的目標是辨識每個群組中的行(由[' Sp', 'Mt'] 定義)最高計數值。在範例1 中,我們有以下預期輸出:

Sp Mt Value count
MM1 S1 a 3
MM1 S3 cb 5
MM2 S3 mk 8
MM2 S4 bg 10
MM4 S2 uyi 7

要實現此目的,我們可以先取得每個組的最大計數值:

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

這會產生:

Sp Mt
MM1 S1 3
MM1 S3 5
MM2 S3 8
MM2 S4 10
MM4 S2 7

然後,擷取原始DataFrame的索引,其中計數值等於每個索引中的最大值group:

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

這將產生所需的輸出。

範例2:

在範例2 中,預期輸出如下:

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

在此場景中,MM4 組內有多行具有最大計數值(8)。使用與之前相同的方法,我們得到兩行:

Sp Mt Value count
MM2 S4 bg 10
MM4 S2 cb 8
MM4 S2 uyi 8

更新:

如果目標是向DataFrame 添加一個新列,指示每個組內的最大計數值,我們可以使用轉換方法來計算每個組的值row :

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

這將產生一個包含count_max 欄位的DataFrame,其中包含每個列的最大計數值組:

Sp Mt Value count count_max
MM1 S1 a 3 3
MM1 S1 n 2 3
MM1 S3 cb 5 5
MM2 S3 mk 8 8
MM2 S4 bg 10 10
MM2 S4 dgd 1 10
MM4 S2 rd 2 7
MM4 S2 cb 2 7
MM4 S2 uyi 7 7

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

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