如何在Pandas中按年/月重置计算扩展窗口均值?
按年/按月重置的扩展均值计算方案
核心思路
利用groupby按年份或月份分组,在每个分组内部计算扩展均值(expanding mean),每当年份/月份切换时,扩展窗口会自动重置,最终结果将与原数据框的索引、列结构完全一致。
1. 生成示例数据(与你的数据集结构一致)
import pandas as pd import numpy as np df = pd.DataFrame( np.random.randint(0, 100, size=(1000, 8)), columns=list('ABCDEFGH'), index=pd.date_range("20180101", periods=1000) )
2. 按年重置的扩展均值
按索引的年份分组,每组内计算从年初到当前日期的累计均值:
# 按年重置的扩展均值 annual_expanding_mean = df.groupby(df.index.year).expanding().mean().reset_index(level=0, drop=True)
df.index.year提取每个时间索引对应的年份,作为分组依据expanding().mean()在每个年份组内计算累计均值reset_index(level=0, drop=True)移除分组产生的年份索引,恢复原DatetimeIndex结构
3. 按月重置的扩展均值
按「年-月」周期分组,每组内计算当月初到当前日期的累计均值:
# 按月重置的扩展均值 monthly_expanding_mean = df.groupby(df.index.to_period('M')).expanding().mean().reset_index(level=0, drop=True)
df.index.to_period('M')将DatetimeIndex转换为月度周期对象(如2018-01),作为分组依据- 后续逻辑与按年计算一致,最终结果保持原数据框的索引和列结构
内容的提问来源于stack exchange,提问作者mikkom
相关产品推荐
相关产品推荐

