Segundo Salario Más Alto

Escribe una solución para encontrar el segundo salario más alto de la tabla Employee. Si no existe un segundo salario más alto, regresa null (return None en Pandas).

#pandas

Tabla: Employee

+-------------+------+
| Column Name | Type |
+-------------+------+
| id          | int  |
| salary      | int  |
+-------------+------+

- `id` es la llave primaria (columna con valores únicos) para esta tabla.
- Cada fila de esta tabla contiene información del salario de un empleado.

El formato del resultado se muestra en el siguiente ejemplo.

Ejemplo 1:

Entrada:

Tabla Employee:
+----+--------+
| id | salary |
+----+--------+
| 1  | 100    |
| 2  | 200    |
| 3  | 300    |
+----+--------+

Salida:

+---------------------+
| SecondHighestSalary |
+---------------------+
| 200                 |
+---------------------+

Ejemplo 2:

Entrada:

Tabla Employee:
+----+--------+
| id | salary |
+----+--------+
| 1  | 100    |
+----+--------+

Salida:

+---------------------+
| SecondHighestSalary |
+---------------------+
| null                |
+---------------------+

Solución:

import numpy as np
import pandas as pd

def second_highest_salary(employee: pd.DataFrame) -> pd.DataFrame:
    col_name = 'SecondHighestSalary'

    salaries = employee['salary'].drop_duplicates()
    two_highest = salaries.nlargest(2).reset_index()

    try:
        second = two_highest.loc[1]  # Second highest salary

        return pd.DataFrame(
            [[second['salary']]], columns=[col_name]
        ).astype({col_name: 'int64'})
    except KeyError:
        return pd.DataFrame({col_name: [np.nan]})

slackmart blog © 2024