Pandas Groupby按顺序获取多个列的最大值



我在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
...

我想要groupbyColA并按顺序获得ResultTypes的max,即以这样一种方式,它应该首先找到Result列的max,如果有多个max行,然后查看Freq并找到那里的max。我试过使用groupby().max().reset_index(),但没有得到所需的输出

预期输出

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

您可以按Results/frequency排序,然后按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

NB。警告您的列名是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

相关内容

  • 没有找到相关文章