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.

¿Cómo puedo aplicar múltiples funciones que involucren múltiples columnas de un marco de datos de pandas con groupby?

Dado el siguiente dataframe:

id cat date max score
1 s1 A 12/06 9 5.4
2 s1 B 12/06 10 5.4
3 s2 C 11/04 13 4.2
4 s2 D 11/04 28 10
5 s3 E 08/02 16 5.4
5 s3 F 08/02 6 5.4

Quiero agrupar por “id” y obtener el primero de las columnas [cat, date], pero al mismo tiempo quiero obtener la media de las columnas max – score. Creo que se puede hacer con una función de agregación:

pero con aggregate no puedo acceder a todas las columnas del dataframe.

id cat date mean(max-score)
s1 A 12/06 4.1
s2 C 11/04 13.4
s3 E 08/02 5.6
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Se pueden usar las funciones groupby y agg para lograr esto.

    df.groupby('id').agg({'cat': 'first', 'date': 'first', 'max': 'mean', 'score': 'mean'})
    

    Esto devolverá el siguiente dataframe:

    id cat date mean(max) mean(score)
    s1 A 12/06 9.5 5.4
    s2 C 11/04 20.5 7.1
    s3 E 08/02 11 5.4

Comments are closed.