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

如何在Pandas DataFrame中计算冬月(12/1/2月)的目标平均值?

解决跨年度冬季(12/1/2月)数据的平均值计算问题

我明白你的问题了——你要计算的是**跨年度冬季(前一年12月 + 当年1、2月)**的平均值,但默认的年度重采样(resample('a'))是按自然日历年度(1月到12月)聚合,所以会把同一年里的1、2月和当年12月混在一起,这显然不符合你的需求。下面是具体的解决方案:

步骤1:还原你的数据(方便复现)

首先我们先构造你提供的DataFrame:

import pandas as pd

# 构造数据
data = {
    'date': ['2000-02-29', '2000-03-31', '2000-04-30', '2000-05-31', '2000-06-30', 
             '2000-07-31', '2000-08-31', '2000-09-30', '2000-10-31', '2000-11-30', 
             '2000-12-31', '2001-01-31', '2001-02-28', '2001-03-31', '2001-04-30', 
             '2001-05-31', '2001-06-30', '2001-07-31', '2001-08-31', '2001-09-30', 
             '2001-10-31', '2001-11-30', '2001-12-31', '2002-01-31', '2002-02-28', 
             '2002-03-31', '2002-04-30'],
    'value': [0.046871, None, None, None, None, None, None, None, None, None, 
              0.015948, 0.020552, 0.033409, None, None, None, None, None, None, None, 
              None, None, 0.013204, 0.017093, 0.019723, None, None]
}

# 转换为datetime索引的DataFrame
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')

步骤2:添加冬季年度标识

核心思路是给每个冬季月份分配一个跨年度的冬季年份:

  • 1月、2月属于当前日历年份的冬季
  • 12月属于下一个日历年份的冬季

这样就能把前一年12月和当年1、2月归到同一个冬季组里:

# 创建冬季年份列
df['winter_year'] = df.index.year

# 把12月的冬季年份加1,归到下一年的冬季组
df.loc[df.index.month == 12, 'winter_year'] += 1

步骤3:筛选冬季数据并计算平均值

先过滤出只有12、1、2月的有效数据,再按冬季年份分组求平均:

# 筛选冬季月份(1、2、12月)且值不为NaN的行
winter_data = df[(df.index.month.isin([1, 2, 12])) & df['value'].notna()]

# 按冬季年份分组计算平均值
winter_average = winter_data.groupby('winter_year')['value'].mean()

最终结果

运行上述代码后,你会得到符合需求的冬季平均值:

print(winter_average)
# 输出:
# winter_year
# 2000    0.046871
# 2001    0.023303
# 2002    0.016673
# Name: value, dtype: float64
  • 2000冬季:仅包含2000年2月的数据(无1999年12月数据)
  • 2001冬季:2000年12月 + 2001年1月 + 2001年2月的平均值
  • 2002冬季:2001年12月 + 2002年1月 + 2002年2月的平均值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:45