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

使用Pandas外推潜在蒸发量时间序列至1975年

日潜在蒸发量时间序列扩展解决方案

核心逻辑

基于现有11年数据计算的日度基准统计值(min、mean、0.9分位数、max),将其映射到1975年至今的每一个对应日期(含闰年2月29日处理),生成完整时间序列。

分步实现代码

1. 规整基准统计数据

假设你已通过groupby得到基准年的日度统计数据,先将其索引统一为一年中的第几天(dayofyear,适配闰年):

# 若基准数据索引是仅含月日的datetime格式,提取dayofyear
df_baseline['dayofyear'] = df_baseline.index.dayofyear
# 按dayofyear聚合,确保每个日序对应唯一统计值
df_baseline = df_baseline.groupby('dayofyear').first()

2. 创建目标时间范围索引

生成1975年至今的完整日度时间索引:

import pandas as pd

start = '1975-01-01'
end = pd.Timestamp.today().strftime('%Y-%m-%d')
target_dates = pd.date_range(start=start, end=end, freq='D')

3. 映射基准值到目标序列

将目标日期的dayofyear与基准数据关联,完成填充:

# 转换目标索引为DataFrame并添加dayofyear列
df_expanded = pd.DataFrame(index=target_dates)
df_expanded['dayofyear'] = df_expanded.index.dayofyear

# 处理闰年2月29日:若基准数据无366日统计值,用365日的值或全年均值填充
if 366 not in df_baseline.index:
    df_baseline.loc[366] = df_baseline.loc[365]  # 可替换为df_baseline.mean()

# 合并基准统计值到扩展序列
df_expanded = df_expanded.join(df_baseline, on='dayofyear')

备选方案:用月日字符串关联

如果基准数据是按(月,日)分组的,可用%m-%d字符串作为关联键:

df_expanded['month_day'] = df_expanded.index.strftime('%m-%d')
df_baseline['month_day'] = df_baseline.index.strftime('%m-%d')
df_expanded = df_expanded.merge(df_baseline, on='month_day', how='left').set_index(target_dates)

问题排查要点

  • reindex失败通常是因为目标索引与基准数据索引类型不匹配,统一用dayofyear或%m-%d字符串即可解决
  • 检查缺失值:执行df_expanded.isna().sum(),若存在缺失,需补充对应日序的统计值(如用全年均值填充)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:50:18