簡體   English   中英

Pandas Groupby 獲取多列的最大值但按順序

[英]Pandas Groupby get max of multiple columns but in order

我有以下 pandas dataframe

COlA    ColB    Result  Freq
A       B       1       3000
A       C       0.2     4000
A       D       1       5000
A       E       0.3     9000
A       F       0.4     8000
B       A       0.4     1000
B       C       0.1     4000
B       D       0.1     5000
B       E       0.2     9000
B       F       0.3     8000
...

我想按groupby ColA並按順序獲取ResultTypes的最大值,即如果有多個最大行,它應該首先找到Result列的最大值,然后查看Freq並在那里找到最大值。 我試過使用groupby().max().reset_index()但沒有得到所需的 output

預計 Output

COlA    ColB    Result  Freq
A       D       1       5000
B       A       0.4     1000
...

您可以按結果/頻率排序,然后按groupby + first排序:

(df.sort_values(by=['Result', 'Freq'], ascending=False)
   .groupby(['COlA'], as_index=False).first()
)

輸出:

  COlA ColB  Result  Freq
0    A    D     1.0  5000
1    B    A     0.4  1000

注意。 警告您的列名是COlA (大寫 O)

def function1(dd:pd.DataFrame):
    return dd.sort_values(by=['Result','Freq'],ascending=[False,False]).head(1)

df1.groupby('COlA').apply(function1).reset_index(drop=True)


out

  COlA ColB  Result  Freq
0    A    D     1.0  5000
1    B    A     0.4  1000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM