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

多ticker股票数据按代码分组后如何索引Adj Close计算均值

你现在处理的是Pandas的多级列索引(MultiIndex)结构数据,有两种常用方法可以快速提取所有ticker的Adj Close字段并计算均值:

方法1:使用xs方法(更直观)

xs是Pandas专门用于多级索引切片的方法,直接指定要取的第二级列名称、对应层级和操作轴即可:

# 提取所有ticker的Adj Close列
adj_close = df.xs('Adj Close', level=1, axis=1)
# 计算每个ticker的Adj Close均值,自动跳过NaN值
adj_close_mean = adj_close.mean()

参数说明:

  • 'Adj Close':要匹配的二级索引值
  • level=1:指定匹配的是二级索引(一级ticker索引为level=0,二级字段索引为level=1)
  • axis=1:指定操作对象是列索引

方法2:使用.loc多级索引

如果需要更灵活的切片逻辑,可以用.loc配合多级索引元组实现:

# 行方向取所有,列方向取任意一级索引、二级索引为Adj Close的列
adj_close = df.loc[:, (slice(None), 'Adj Close')]
# 计算均值
adj_close_mean = adj_close.mean()

其中slice(None)对应一级ticker索引的全选,等价于Python原生的:切片逻辑。

运行后得到的adj_close_mean就是以ticker名为索引、对应Adj Close均值为值的Series结果。
如果已经提前按ticker做了列分组,也可以直接在分组对象上调用apply实现:

grouped = df.groupby(level=0, axis=1)
adj_close_mean = grouped.apply(lambda x: x.xs('Adj Close', level=1, axis=1).mean())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:36:05