Elimine duplicados manteniendo la fila con el valor más alto en otra columna

a = [['John', 'Mary', 'John'], [10,22,50]]) df1 = pd.DataFrame(a, columns=['Name', 'Count']) 

Dado un dataframe como este, quiero comparar todos los valores de cadena similares de “Nombre” con el valor de “Recuento” para determinar el más alto. No estoy seguro de cómo hacer esto en un dataframe en Python.

Ej: En el caso anterior, la Respuesta sería:

  • Recuento de nombres
  • Maria 22
  • Juan 50

El valor inferior John 10 se ha eliminado (solo quiero ver el valor más alto de “Count” basado en el mismo valor para “Name”).

En SQL sería algo así como una consulta de selección de caso (en donde selecciono el caso donde Nombre == Nombre y recuento> Cuenta recursivamente para determinar el número más alto. O un bucle For para cada nombre, pero según entiendo, los bucles en DataFrames son una Mala idea debido a la naturaleza del objeto.

¿Hay alguna manera de hacer esto con un DF en Python? Podría crear un nuevo dataframe con cada variable (uno con Only John y luego obtener el valor más alto (df.value () [: 1] o similar). Pero como tengo muchos cientos de entradas únicas, parece una solución terrible. :RE

Ya sea sort_values y drop_duplicates ,

 df1.sort_values('Count').drop_duplicates('Name', keep='last') Name Count 1 Mary 22 2 John 50 

O, como dijo groupby , groupby y max .

 df1.groupby('Name').Count.max().reset_index() Name Count 0 John 50 1 Mary 22