題目:
表:?
Weather
+---------------+---------+ | Column Name | Type | +---------------+---------+ | id | int | | recordDate | date | | temperature | int | +---------------+---------+ id 是該表具有唯一值的列。 該表包含特定日期的溫度信息編寫解決方案,找出與之前(昨天的)日期相比溫度更高的所有日期的?
id
?。返回結果?無順序要求?。
結果格式如下例子所示。
來源:力扣(LeetCode)
鏈接:力扣(LeetCode)官網 - 全球極客摯愛的技術成長平臺
示例:
示例 1:
輸入:
Weather 表:
+----+------------+-------------+ | id | recordDate | Temperature | +----+------------+-------------+ | 1 | 2015-01-01 | 10 | | 2 | 2015-01-02 | 25 | | 3 | 2015-01-03 | 20 | | 4 | 2015-01-04 | 30 | +----+------------+-------------+
輸出:+----+ | id | +----+ | 2 | | 4 | +----+
解釋:2015-01-02 的溫度比前一天高(10 -> 25) 2015-01-04 的溫度比前一天高(20 -> 30)
解法:
先根據日期排序,接著比對后一天是不是和當前間隔1天且溫度更高。
知識點:
1.pd.Timedelta(value, unit=None, **kwargs):表示兩個datetime值之間的差。value:日期形式字符串;unit:指定value的類型。創建方式比如:
pd.Timedelta(days=1)表示間隔1天。
代碼:
import pandas as pddef rising_temperature(weather: pd.DataFrame) -> pd.DataFrame:weather.sort_values('recordDate', inplace=True)w = list(zip(weather['id'], weather['recordDate'], weather['temperature']))return pd.DataFrame({'id': [w[index][0] for index in range(1, len(w)) if w[index][1] - w[index - 1][1] == pd.Timedelta(days=1) and w[index][2] > w[index - 1][2]]})