es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Panda obtiene un valor de la columna basado en la condición máxima para obtener los nombres de clúster adecuados.

He podido agrupar exitosamente mis datos y se me presenta el siguiente dataframe:

    cluster_group  name value
0              1     A    20 
1              1     B    30 
2              1     C    10 
3              1     D    50 
4              2     E    20 
5              2     F    10 
...

Lo que quiero para poder exportarlo mejor, es darle a cluster_group un nombre en lugar de un número entero. El nombre debería basarse en la columna de nombre con el valor más alto. Entonces, el resultado debería verse así:

    cluster_name  name value
0             D     A    20 
1             D     B    30 
2             D     C    10 
3             D     D    50 
4             E     E    20 
5             E     F    10 
...

¿Cómo podría hacer esto de la manera más eficiente?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una forma de hacer esto es primero agrupar los datos por cluster_group, luego encontrar la fila con el valor más alto para cada grupo y extraer el nombre correspondiente. Luego, combinar esta información nuevamente en el dataframe original utilizando la columna cluster_group como clave. Aquí tienes un ejemplo de código:

    # agrupar por cluster_group y encontrar la fila con el valor máximo
    max_names = df.groupby('cluster_group').apply(lambda x: x.loc[x['value'].idxmax(), 'name'])
    
    # crear un nuevo dataframe con la columna cluster_name
    new_df = pd.DataFrame({'cluster_name': max_names, 'name': df['name'], 'value': df['value']})
    
    # reordenar las columnas
    new_df = new_df[['cluster_name', 'name', 'value']]
    
    # imprimir el resultado
    print(new_df)
    

    Esto debería producir el dataframe deseado con los nombres de los clusters en lugar de enteros.

Comments are closed.