determinar el valor máximo de la columna por otra columna en el dataframe de pandas

Tengo un dataframe que contiene la identificación de la ubicación, el nombre de la tienda y los ingresos de la tienda. Quiero determinar la tienda que tiene el máximo de ingresos por área.

Escribí un código para eso, pero no estoy seguro de si hay una mejor manera de manejar este caso

import pandas as pd dframe=pd.DataFrame({"Loc_Id":[1,2,2,1,2,1,3,3],"Store":["A","B","C","B","D","B","A","C"], "Revenue":[50,70,45,35,80,70,90,65]}) #group by location id, then save max per location in new column dframe["max_value"]=dframe.groupby("Loc_Id")["Revenue"].transform(max) #create new column by checking if the revenue equal to max revenue dframe["is_loc_max"]=dframe.apply(lambda x: 1 if x["Revenue"]==x["max_value"] else 0,axis=1) #drop the intermediate column dframe.drop(columns=["max_value"],inplace=True) 

Y esta es la salida requerida: [ingrese la descripción de la imagen aquí

¿Hay una mejor manera de obtener esta salida

Cree una máscara booleana comparándola con eq ( == ) y conviértala a integer s – 0, 1 a False, True :

 s = dframe.groupby("Loc_Id")["Revenue"].transform('max') dframe["max_value"]= s.eq(dframe["Revenue"]).astype(int) print (dframe) Loc_Id Store Revenue max_value 0 1 A 50 0 1 2 B 70 0 2 2 C 45 0 3 1 B 35 0 4 2 D 80 1 5 1 B 70 1 6 3 A 90 1 7 3 C 65 0