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

Python:如何遍历pandas层级列,提取各股票代码对应的每日价格数据

多级列索引DataFrame提取各股票每日价格的实现方案

前提说明

你的DataFrame列采用两级索引结构:

  • 第0级(外层):股票代码(TSLA、IBM等)
  • 第1级(内层):指标类型(price、volume、marketcap)
    你需要的是提取每个股票对应的每日price数据。

方案1:一次性提取所有股票的价格表(推荐)

不需要遍历,直接用pandas多级索引筛选即可,代码如下:

# 先修正你原有代码的赋值问题:把重排后的结果赋值给df
df = df.set_index('ticker', append=True).unstack('ticker').swaplevel(axis=1).sort_index(axis=1,level=0, sort_remaining=False)
# 筛选所有股票的price列
df_prices = df.loc[:, pd.IndexSlice[:, 'price']]
# 去掉内层的price索引,列名直接显示为股票代码
df_prices.columns = df_prices.columns.droplevel(1)

得到的df_prices结构如下:

DateTSLAIBM
2018-01-011000NaN
2018-01-021200NaN
2018-01-03NaN101
2018-01-04NaN108

方案2:遍历每个股票单独提取价格列

如果你需要逐只股票处理,单独生成每个股票的价格DataFrame,用如下代码:

# 获取所有唯一的股票代码
tickers = df.columns.get_level_values(0).unique()
for ticker in tickers:
    # 提取单只股票的price列,生成单列DataFrame,列名为股票代码
    single_ticker_price = df.xs('price', level=1, axis=1)[ticker].to_frame()
    # 这里添加你对single_ticker_price的处理逻辑
    print(single_ticker_price)

每次循环输出的single_ticker_price完全符合你给出的示例格式,比如TSLA的输出:

TSLA
Date            
2018-01-01  1000
2018-01-02  1200
2018-01-03   NaN
2018-01-04   NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:04