You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame中筛选出5个不同日期的最高气温记录?

提取逐小时气温数据中Top5最高温的不同日期

核心问题分析

直接用nlargest(5, 'temp')会返回同一天内的多条小时记录(因为当天最高温的小时可能有多个,或该天的最高温远高于其他天),导致结果全是同一日期。解决关键是先按日期聚合计算每日最高温,再从日最高温中筛选Top5日期。


具体解决方案(基于Pandas)

假设你的数据集包含:

  • datetime:datetime类型的逐小时时间戳列
  • temp:气温数值列

步骤1:提取日期字段(若无双独日期列)

如果原数据只有完整时间戳,先提取日期部分作为单独列:

import pandas as pd

# 读取数据集(替换为你的文件路径)
df = pd.read_csv('temperature_data.csv')
# 将时间戳列转为datetime类型(未转换时执行)
df['datetime'] = pd.to_datetime(df['datetime'])
# 提取纯日期部分
df['date'] = df['datetime'].dt.date

步骤2:按日期聚合计算每日最高温

分组后取每天的最高气温,得到每个日期对应的最高温数据:

# 按日期分组,计算每日最高温
daily_max_temp = df.groupby('date')['temp'].max().reset_index()

步骤3:筛选Top5最高温的不同日期

从日最高温数据中取前5个最大值对应的日期:

# 获取Top5最高温的日期列表
top5_dates = daily_max_temp.nlargest(5, 'temp')['date'].tolist()

# 若需保留对应的最高温时间记录:
# 先标记每条记录是否为当日最高温
df['is_daily_max'] = df['temp'] == df.groupby('date')['temp'].transform('max')
# 筛选每日最高温记录并去重日期(同一天多时段同温时只留一条)
daily_max_records = df[df['is_daily_max']].drop_duplicates('date')
# 取前5条完整记录
top5_full_records = daily_max_records.nlargest(5, 'temp')

关键说明

  • groupby('date')['temp'].max():确保每个日期仅保留一个最高温值,避免同一天的多条记录干扰结果
  • drop_duplicates('date'):若同一天多时段达到最高温,仅保留一条记录(可根据需求移除该步骤保留所有同温时段)
  • 若你的日期列已是单独字符串格式(如'2023-01-01'),可跳过步骤1直接分组计算

内容的提问来源于stack exchange,提问作者whitebeard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 06:40:21