如何按公共分组变量而非全量数据计算算术平均值
解决方案
假设你的DataFrame至少包含公司标识(如股票代码/名称,用于区分22家公司)、周数、日度价格三个核心字段,以下是Python Pandas环境下的实现方案:
方案1:保留原日度数据结构,新增周平均列
如果需要保留原有每日数据行,仅新增列匹配对应周的均值,使用groupby+transform实现:
import pandas as pd # 按公司、周数两个维度分组,计算周均价格 df['周平均价格'] = df.groupby(['公司标识', '周数'])['日度价格'].transform('mean')
方案2:直接生成每只股票对应52周的汇总表
如果不需要保留日度数据,直接得到22家公司×52周的周均价格结果表:
# 分组聚合后重置索引,得到结构化的周均表 weekly_avg_df = df.groupby(['公司标识', '周数'], as_index=False)['日度价格'].mean().rename(columns={'日度价格':'周平均价格'})
注意事项
如果你的数据覆盖多个自然年,务必将「年份」字段也加入分组条件,避免不同年份的同一周数据被错误合并。如果存在单周内某只股票无交易日的情况,计算得到的周均值会是空值,可根据需求用dropna()删除空值,或用插值法补全。
内容的提问来源于stack exchange,提问作者Nish
相关产品推荐
相关产品推荐

