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

pandas实现非连续15分钟降水数据重采样及最大8小时降水站点查找

解决方案

问题根因

你原有的代码没有按station_id分组就直接执行重采样,会把所有站点同时段的降水量合并求和,自然无法得到站点独立的小时级统计结果。

完整处理步骤

步骤1:预处理时间字段

首先确保time_start为pandas datetime类型,避免后续时间运算出错:

import pandas as pd
# 转换时间字段格式
df['time_start'] = pd.to_datetime(df['time_start'])

步骤2:按站点分组重采样得到小时级降水数据

分组后再执行重采样操作,保留站点维度,同时仅对降水量字段求和,避免其他数值字段被错误聚合:

# 按站点分组后逐站点做小时重采样
df_H = df.groupby('station_id', group_keys=False)\
         .resample('H', on='time_start', closed='right')['precipition']\
         .sum()\
         .reset_index()
# 输出每个站点按时间排序的小时降水量表(满足你的输出要求)
df_H_sorted = df_H.sort_values(by=['station_id', 'time_start']).reset_index(drop=True)

如果需要导出该结果可直接调用df_H_sorted.to_csv('station_hour_precip.csv', index=False)

步骤3:筛选目标时段并按日统计总降水量

提取小时、日期维度,筛选指定的3个时段后聚合得到日度总降水量:

# 提取日期和小时字段
df_H_sorted['date'] = df_H_sorted['time_start'].dt.date
df_H_sorted['hour'] = df_H_sorted['time_start'].dt.hour

# 筛选7:00-10:00、13:00-14:00、16:00-17:00三个时段,小时维度匹配7、8、9、13、16
target_hours = [7,8,9,13,16]
df_target = df_H_sorted[df_H_sorted['hour'].isin(target_hours)]

# 按站点+日期统计目标时段总降水量
df_daily_total = df_target.groupby(['station_id', 'date'], as_index=False)['precipition'].sum()

# 定位总降水量最大的站点和对应日期
max_row = df_daily_total.loc[df_daily_total['precipition'].idxmax()]
print("最大降水量对应站点:", max_row['station_id'])
print("对应日期:", max_row['date'])
print("目标时段总降水量:", max_row['precipition'])

注意事项

  • 重采样的closed参数如果匹配你的统计规则可调整为closed='left',适配15分钟观测归属于结束时间所在小时的统计逻辑
  • 缺测的小时重采样后会自动填充为0,符合降水量缺测按无降水处理的常规统计规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:54:04