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.

Significa agrupar, excluyendo algunas filas.

Tengo una tabla a continuación y quiero calcular la media por estado, me gustaría calcular la media solo para las filas que tienen 1 como cliente.

Cliente Estado Puntuación Salida_Promedio
0 GA 1
1 GA 2 2.5
1 GA 3 2.5
1 NY 9 8
1 NY 7 8
0 DC 6
0 DC 4

Tengo el siguiente código, ¿cómo puedo agregar el criterio del cliente?

df['salida_promedio'] = (df.fillna({'estado':'faltante'}).groupby(['estado'])['puntuación'].transform(lambda x: x.mean()))
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para agregar el criterio del cliente para calcular la media, puedes modificar la función groupby para agrupar las filas por estado y cliente, luego calcular la media en ese grupo. El código modificado se vería así:

    df['output_mean'] = df[df['customer']==1].fillna({'state':'missing'}).groupby(['state'])['score'].transform(lambda x: x.mean())
    

    En este código, primero filtramos las filas donde el cliente es 1 usando df[df['customer']==1]. Luego, agrupamos estas filas por estado usando groupby(['state']), y calculamos la media de puntaje para cada grupo usando transform(lambda x: x.mean()). Finalmente, asignamos las medias calculadas a la columna output_mean en el dataframe original.

    Ten en cuenta que también necesitamos llenar los valores faltantes de estado con una cadena de marcador de posición (por ejemplo, ‘missing’) usando fillna({'state':'missing'}) para que la función groupby funcione correctamente.

Comments are closed.