You can slice the dataframe by using the informatioa from GroupBy:
g = df.groupby("SN")["Amount"].max()
df = df.loc[df["SN"].isin(g.index) & df["Amount"].isin(g.values)].reset_index(drop=True)
display(df)
SN Category Amount
0 1 Cat2 3000
1 2 Cat22 5000