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

如何在Pandas中自定义季节区间(指定起始月)计算数据均值?

自定义季节均值计算方案

问题1:指定季节起始月份解决resample分组问题

直接用resample的origin参数指定季节起始点,结合'3M'频率,就能让分组从2013年12月开始,完美匹配你需要的12-2月、3-5月等区间:

# 设置origin为数据起始的12月,确保分组从该月开始
seasonal_mean = df.resample('3M', origin='2013-12-01').mean()

如果想让结果的标签显示每个季节区间的最后一个月(比如12-2月的标签显示为2月),可以加上label='right'参数:

seasonal_mean = df.resample('3M', origin='2013-12-01', label='right').mean()

问题2:预定义季节分组计算均值

可以先给每条数据标记所属季节,再通过groupby计算均值,灵活性更强:

  1. 编写月份到自定义季节的映射规则,新增季节列:
# 定义月份对应的季节
def get_season(month):
    if month in [12, 1, 2]:
        return '冬季(12-2月)'
    elif month in [3, 4, 5]:
        return '春季(3-5月)'
    elif month in [6, 7, 8]:
        return '夏季(6-8月)'
    elif month in [9, 10, 11]:
        return '秋季(9-11月)'

# 给数据添加季节标签
df['季节'] = df.index.month.apply(get_season)
# 按季节分组计算均值
seasonal_mean = df.groupby('季节').mean()

如果需要区分不同年份的同季节(比如2013-2014冬季、2014-2015冬季),可以把年份和季节结合:

def get_year_season(date):
    month = date.month
    year = date.year
    # 12月归属到下一年的冬季,1-2月归属到当前年冬季,其余月份归属当前年对应季节
    season_year = year + 1 if month == 12 else year
    season = get_season(month)
    return f"{season_year}年{season}"

df['年度季节'] = df.index.map(get_year_season)
seasonal_mean = df.groupby('年度季节').mean()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:21