pandas提取某欄位最大值所對應的行

2021-10-04 02:15:23 字數 998 閱讀 7839

我們處理某些**資料時,會遇到某個欄位在不同類別中有不同的值,有時候需要提取某個類別中該字段最大值所對應的行,只用group by 往往不行。其實,使用group by 和 merge 相結合,即可輕鬆解決這個問題。

在上圖的df中,不同的name對應著num值、年份,

現在想提取每一year的最大num所對應的name

可以看到,通過group by,我們提取出了每一year所對應的最大num。注意:我們進行group by 時,選取了原df中的兩列:『year』、『num』,這樣做是排除name的干擾,groupby()函式中,需要指定分組依賴的列『year』,並設定不將分組列作為索引;最後的max()是按最大值提取該分組的資料,當然其他函式如min()/mean()同樣適用。

可以看到,對df_groupby和原表df進行左連後,成功取出了每一year最大num對應的name!

原始碼如下:

import pandas as pd

data =

df= pd.dataframe(data)

df_groupby = df[

['year','num'

]].groupby(by=

'year',as_index=false).max()

df_merge = pd.merge(df_groupby,df,on=

['year','num'

],how=

'left'

)

pandas 新增最大值的列名

在我們處理 資料的時候,有時候只有幾個列和其對應的個數,我們想得到這幾個列裡面最大值的列名,該怎麼做呢?資料樣式 df pd.read table metaj numbers.txt index col 0 匯入資料 global collist collist list df.columns 得到...

SQL Quiz 找出欄位中最大值

內部訓練題目 最近在幫部門內的同仁快快樂樂學t sql,想到乙個好玩的題目給大家,假設有乙個資料表students,裡面記錄學生的三次考試成績,需要找到三次中最高的成績,請問要如何下sql 呢 這個是產生測試範例 希望大家可以寫超過三種以上的解法 1 使用case 的作法 如果要判斷的字段不多是還算...

Mysql按欄位分組取最大值記錄

在實際工作中,我們經常碰到這樣的工作情況,取出使用者訂單中給定使用者的最大單筆購買金額,此時,可以用到mysql的按字段分組取最大值,操作如下 表 user order 結構如下,我的操作是取出uid對應的最大的buy time 方法0 select uid,max buy time from us...