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.

Crear una columna con valor máximo (A-Z)

Tengo el siguiente dataframe, quiero crear una nueva columna que muestre la puntuación más alta para cada ID. La puntuación va de A a Z, siendo A la puntuación más baja y Z la más alta.

ID Puntuación
001 A
001 B
001 C
002 A
002 A
A003 E
A003 G
A003 G

Resultado:

ID Puntuación Columna Nueva
001 A C
001 B C
001 C C
002 A A
002 A A
A003 E G
A003 G G
A003 G G

¿Existe alguna manera fácil de lograr esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar la función groupby para agrupar el dataframe por ID, luego usar la función transform para crear una nueva columna que muestre la puntuación más alta para cada grupo. Aquí tienes un ejemplo de código:

    import pandas as pd
    
    df = pd.DataFrame({'ID': ['001', '001', '001', '002', '002', 'A003', 'A003', 'A003'],
                       'Score': ['A', 'B', 'C', 'A', 'A', 'E', 'G', 'G']})
    
    df['Nueva Columna'] = df.groupby('ID')['Score'].transform(max)
    
    print(df)
    

    Esto dará como resultado:

        ID Score Nueva Columna
    0  001     A             C
    1  001     B             C
    2  001     C             C
    3  002     A             A
    4  002     A             A
    5 A003     E             G
    6 A003     G             G
    7 A003     G             G
    

    Ten en cuenta que, dado que las puntuaciones están en orden alfabético, simplemente podemos usar la función max para obtener la puntuación más alta para cada grupo. Si las puntuaciones estuvieran en un orden diferente, necesitaríamos usar una función personalizada para obtener la puntuación más alta.

Comments are closed.