[英]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
並按順序獲取Result
和Types
的最大值,即如果有多個最大行,它應該首先找到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.