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()))
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í:
En este código, primero filtramos las filas donde el cliente es 1 usando
df[df['customer']==1]
. Luego, agrupamos estas filas por estado usandogroupby(['state'])
, y calculamos la media de puntaje para cada grupo usandotransform(lambda x: x.mean())
. Finalmente, asignamos las medias calculadas a la columnaoutput_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.