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.

Agregue una columna llena de valores que correspondan al valor máximo en otra columna para cada valor en la tercera columna.

Tengo este dataframe

    state   in  out 
0   case_1   1  -5  
1   case_2   0  -1  
2   case_2  -1   8
3   case_1  -2   5
4   case_2  -2   1

Necesito crear una columna adicional con los valores de “in” que corresponden a los valores máximos en “out” para cada “state” (case_1, case_2).

    state   in  out  new
0   case_1   1  -5   -2
1   case_2   0  -1   -1
2   case_2  -1   8   -1
3   case_1  -2   5   -2
4   case_2  -2   1   -1
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, podemos agrupar el dataframe por la columna “state” usando la función groupby() y luego aplicar la función idxmax() a la columna “out” para obtener el índice del valor máximo en cada grupo. Luego podemos extraer el valor correspondiente a “in” usando la función loc[] y almacenarlo en una nueva columna llamada “new”. El código para esto sería:

    df['new'] = df.groupby('state')['in'].apply(lambda x: x.loc[x.index.get_loc(df.loc[x.index]['out'].idxmax())])
    

    Esto nos dará el dataframe deseado con una columna adicional llamada “new” que contiene los valores de “in” correspondientes a los valores máximos en “out” para cada “state”.

Comments are closed.