Clasificar Puntajes
Tabla: Scores
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | score | decimal | +-------------+---------+ - "id" es la clave primaria para esta tabla. - Cada fila contiene el puntaje de un juego. - "Score" es un valor de punto flotante con dos decimales.
Escribe una solución para encontrar el ranking de los puntajes. El ranking debe calcularse de acuerdo a las siguientes reglas:
- Los puntajes debe clasificarse del más alto al más bajo.
- Si hay un empate entre dos puntajes, ambos deben tener el mismo ranking.
- Despues de un empate, el siguiente número de ranking debe ser el siguiente valor entero consecutivo. En otras palabras, no debe hacer huecos entre rangos.
Devuelve la tabla resultado ordenada por score en orden descendente
Ejemplo
Input
tabla Scores +----+-------+ | id | score | +----+-------+ | 1 | 3.50 | | 2 | 3.65 | | 3 | 4.00 | | 4 | 3.85 | | 5 | 4.00 | | 6 | 3.65 | +----+-------+
Output
Output +-------+------+ | score | rank | +-------+------+ | 4.00 | 1 | | 4.00 | 1 | | 3.85 | 2 | | 3.65 | 3 | | 3.65 | 3 | | 3.50 | 4 | +-------+------+
Soluciones
import pandas as pd
def order_scores(scores: pd.DataFrame) -> pd.DataFrame:
result = scores.copy()
result['rank'] = result['score'].rank(method='dense', ascending=False)
result['rank'] = result['rank'].astype(int)
return result[['score', 'rank']].sort_values('score', ascending=False)