

这里可以使用 SQL 查询来解决这个问题,或者使用 Pandas 代码来处理数据。以下是两种解决方案:
SQL 解决方案:
SELECT w1.id
FROM Weather w1
JOIN Weather w2
ON DATEDIFF(w1.recordDate, w2.recordDate) = 1
WHERE w1.temperature > w2.temperature;
解释:
w1和w2都是Weather表的别名,我们对自己进行JOIN。- 使用
DATEDIFF(w1.recordDate, w2.recordDate) = 1来匹配前一天的记录。 WHERE w1.temperature > w2.temperature过滤出温度更高的日期。
Pandas 解决方案:
import pandas as pd
# 假设 Weather 是一个 Pandas DataFrame
def find_hotter_days(weather: pd.DataFrame) -> pd.DataFrame:
weather['recordDate'] = pd.to_datetime(weather['recordDate']) # 确保日期格式正确
weather_sorted = weather.sort_values('recordDate') # 先按日期排序
weather_shifted = weather_sorted.copy()
# 创建一列 yesterday,存储前一天的温度
weather_shifted['yesterday_temp'] = weather_shifted['temperature'].shift(1)
weather_shifted['yesterday_date'] = weather_shifted['recordDate'].shift(1) + pd.Timedelta(days=1)
# 过滤符合条件的行
result = weather_shifted[(weather_shifted['recordDate'] == weather_shifted['yesterday_date']) &
(weather_shifted['temperature'] > weather_shifted['yesterday_temp'])]
return result[['id']]
# 示例 DataFrame
data = {
"id": [1, 2, 3, 4],
"recordDate": ["2022-06-01", "2022-06-02", "2022-06-03", "2022-06-04"],
"temperature": [20, 25, 22, 30]
}
weather_df = pd.DataFrame(data)
print(find_hotter_days(weather_df))
解释:
- 将
recordDate转换为datetime格式。 - 按
recordDate排序,以确保时间顺序正确。 - 使用
shift(1)创建前一天的温度和日期数据。 - 过滤符合
recordDate - 1 = 昨天且temperature > 昨天的温度的行。 - 返回
id列。
这两种方法都能找到比昨天温度更高的日期的 id,你可以根据需求选择 SQL 或 Pandas 方案。
418

被折叠的 条评论
为什么被折叠?



