题目:
表:
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 pd def 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]]})