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

如何从DataFrame中提取AAPL与SPY的Close列?

解决多级列索引DataFrame的列筛选问题

你的错误根源在于对列索引类型的误解:这个DataFrame采用的是多级列索引(MultiIndex),列名是两层元组结构(比如('Close', 'AAPL')),而不是你拼接出来的'CloseAAPL'或'Close SPY'这类单级字符串索引,所以直接用拼接后的字符串会触发KeyError。

下面是几种可行的解决方案:

方法1:直接指定多级列的元组列表

直接用元组明确每一列的两层索引,这是最直接的方式:

# 用元组指定要选择的列
data = data[[('Close', 'AAPL'), ('Close', 'SPY')]]

方法2:用xs方法提取指定指标列后筛选标的

先提取所有Close指标的列,再从中选择AAPL和SPY:

# 提取第一层索引为Close的所有列
close_data = data.xs('Close', axis=1, level=0)
# 只保留AAPL和SPY的列
data = close_data[['AAPL', 'SPY']]

如果需要保留原有的多级列结构,可以在xs中添加drop_level=False参数:

data = data.xs('Close', axis=1, level=0, drop_level=False)[[('Close', 'AAPL'), ('Close', 'SPY')]]

方法3:通过列索引条件批量筛选

用get_level_values方法筛选符合条件的列:

# 筛选第一层是Close、第二层是AAPL或SPY的列
mask = (data.columns.get_level_values(0) == 'Close') & (data.columns.get_level_values(1).isin(['AAPL', 'SPY']))
data = data.loc[:, mask]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:17:12