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