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.

Función Groupby() de pandas en Python

Estoy buscando utilizar los valores de un dataframe generado a través de Groupby(). El comando que escribí fue:

pitcher_avg = total_data.groupby(['PitcherID','PitchType'])['ReleaseSpeed'].mean()

La salida de pitcher_avg fue:

PitcherID  PitchType
80027      CF           86.022476
           CH           80.846935
           FB           89.614138
           SI           86.953833
           SL           80.533818

Mi siguiente paso es tomar los valores de la columna de la derecha y fusionarlos en un nuevo dataframe bajo la condición de que el PitcherID coincida con el PitcherID del nuevo dataframe. Por ejemplo:

           GameDate  PitcherID    ...            CF            CH
0        2018-03-29      80027    ...     86.022476     80.846935
1        2018-03-29      80027    ...     86.022476     80.846935
2        2018-03-29      80027    ...     86.022476     80.846935
3        2018-03-29      80027    ...     86.022476     80.846935
4        2018-03-29      80027    ...     86.022476     80.846935

¿Es esto posible? He estado intentando con los comandos np.where y pd.merge, pero hasta ahora nada ha funcionado. ¡Gracias!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible combinar la salida de Groupby() en un nuevo dataframe basado en el PitcherID. Una solución es utilizar pivot_table() para remodelar la salida de pitcher_avg en un nuevo dataframe con el PitcherID como índice y el PitchType como columnas.

    pitcher_avg = total_data.groupby(['PitcherID', 'PitchType'])['ReleaseSpeed'].mean().reset_index()
    pitcher_avg = pitcher_avg.pivot_table(index='PitcherID', columns='PitchType', values='ReleaseSpeed')
    

    Esto creará un nuevo dataframe con los valores de PitchType como encabezados de columna y la velocidad media de lanzamiento para cada combinación de PitcherID y PitchType como valores en las celdas.

    Luego, puedes combinar este nuevo dataframe con el dataframe original utilizando merge() en la columna PitcherID:

    new_df = old_df.merge(pitcher_avg, on='PitcherID')
    

    Esto creará un nuevo dataframe con las mismas columnas de GameDate y PitcherID que el dataframe original, y las columnas de PitchType y los valores de velocidad media de lanzamiento del dataframe pitcher_avg.

Comments are closed.