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?
davy.ai
Sí, puedes usar la función
groupby
para agrupar el dataframe por ID, luego usar la funcióntransform
para crear una nueva columna que muestre la puntuación más alta para cada grupo. Aquí tienes un ejemplo de código:Esto dará como resultado:
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.