Temperaturas en aumento

Escribe una solución para encontrar todos los Id de las fechas con temperaturas más altas en comparación con sus fechas anteriores (ayer). Regresa la tabla resultado en cualquier orden.

#pandas

Tabla: Weather

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| recordDate    | date    |
| temperature   | int     |
+---------------+---------+
- `id` es una columna con valores únicos para esta tabla.
- Esta tabla contiene información acerca de la temperatura en un día específico.

Entrada

Tabla Weather:
+----+------------+-------------+
| id | recordDate | temperature |
+----+------------+-------------+
| 1  | 2015-01-01 | 10          |
| 2  | 2015-01-02 | 25          |
| 3  | 2015-01-03 | 20          |
| 4  | 2015-01-04 | 30          |
+----+------------+-------------+

Salida

+----+
| id |
+----+
| 2  |
| 4  |
+----+

Explicación:
El 2015-01-02, la temperatura fue más elevada que el día anterior (10 -> 25).
El 2015-01-04, la temperatura fue más elevada que el día anterior (20 -> 30).

Solución:

import pandas as pd

def rising_temperature(weather: pd.DataFrame) -> pd.DataFrame:
    weather = weather.sort_values(by='recordDate')

    weather['consecutiveDay'] = weather['recordDate'].eq(
        weather['recordDate'].shift() + pd.Timedelta('1D')
    )

    rising = weather.loc[
        weather['consecutiveDay'] &
        weather['temperature'].gt(weather['temperature'].shift())
    ]

    return pd.DataFrame(rising['id'])

slackmart blog © 2024