You need to enable JavaScript to run this app. 如何从多级列名Pandas DataFrame提取ticker为另一DataFrame重索引
优惠活动
大模型
产品
解决方案
定价
更多

如何从多级列名Pandas DataFrame提取ticker为另一DataFrame重索引

错误原因

你调用unstack()后得到的df是多级列索引结构:列的第一层是Close,第二层才是你需要的ticker值。你查看的df.index是行索引,确实为Date,但是你需要的ticker值存储在df的列索引的第二层,而非行索引中。
你直接传入df.columns.values给set_index时,传入的是包含两级索引信息的元组数组,set_index会默认尝试给df1设置两级行索引,但df1本身是单级索引结构,因此触发层级不匹配的报错。

解决方法

你只需要先取出df列的第二层ticker索引,再给df1设置索引即可,推荐两种写法:

  1. 创建df1时直接指定索引,代码更简洁:
import numpy as np
# 提取列索引第二层的所有ticker值
tickers = df.columns.get_level_values('ticker')
# 生成随机DataFrame时直接指定行索引
data = np.random.random((df.shape[1], 100))
df1 = pd.DataFrame(data, index=tickers)
  1. 若你已经创建了df1,直接修改索引属性即可,无需调用set_index:
tickers = df.columns.get_level_values('ticker')
df1.index = tickers

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 03:51:01