[코딩테스트]/[Pandas]

[LeetCode - Pandas] (Easy) 197. Rising Temperature

잰잰' 2025. 5. 5. 13:41

 

Table: Weather

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| id            | int     |
| recordDate    | date    |
| temperature   | int     |
+---------------+---------+

id는 이 테이블의 고유한 값을 가지는 열입니다.
같은 recordDate를 가진 다른 행은 없습니다.
이 테이블은 특정 날짜의 온도에 대한 정보를 포함하고 있습니다.

 

문제

모든 날짜에서 이전 날짜(어제)의 온도보다 높은 온도를 기록한 날짜의 id를 찾는 해결책을 작성하십시오.

결과 테이블은 아무 순서로 반환해도 됩니다.

결과 형식은 다음 예시와 같습니다.

Example 1:

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

설명 :
2015-01-02에는 온도가 이전 날보다 더 높았습니다 (10 -> 25).
2015-01-04에는 온도가 이전 날보다 더 높았습니다 (20 -> 30).

 

✏️ 풀이

import pandas as pd

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

    return weather[(weather.temperature.diff() > 0) & (weather.recordDate.diff().dt.days == 1)][['id']]

1. recordDate 오름차순 정렬

2. 온도가 이전 날보다 더 높았던 날 필터

3. 하루 전 날짜인지 확인

 

📚 개념정리

diff() : 시계열 데이터나 숫자 데이터를 다룰 때 주로 사용되며, 이전 값과의 차이를 계산하는 함수

기본적으로 diff()는 각 값에서 바로 직전의 값(행)과의 차이를 구함

# 기본 사용법 #
import pandas as pd

# 예시 데이터
data = pd.Series([10, 20, 30, 25, 40])

# diff() 사용
diff_data = data.diff()
print(diff_data)

- diff() 함수의 주요 매개변수

periods: 기본값은 1입니다. 이 값은 몇 개의 이전 값과 차이를 계산할지를 결정. 예를 들어, periods=2로 설정하면 두 번째 이전 값과의 차이를 계산.

# periods=2로 설정하여 두 번째 이전 값과 차이를 계산
diff_data = data.diff(periods=2)
print(diff_data)