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

从DataFrame字典中提取指定列并生成列名为字典键的新DataFrame

从DataFrame字典提取指定列生成新DataFrame

核心思路就是遍历字典里的每个DataFrame,提取你需要的列,再把这些Series按列合并成新DataFrame,列名直接用字典的键(也就是标的代码)——不管标的数量多少,这个方法都能自动适配。

基础实现代码

假设你的DataFrame字典叫df_dict,要提取的列是'close',一行代码就能搞定:

import pandas as pd

# 提取所有DataFrame的'close'列,合并为新DataFrame
new_df = pd.concat({ticker: df['close'] for ticker, df in df_dict.items()}, axis=1)

逻辑解释

  • 字典推导式{ticker: df['close'] for ticker, df in df_dict.items()}会生成一个新字典:键是标的代码,值是对应DataFrame的'close'列(Series类型)。
  • pd.concat(..., axis=1)把这些Series按列拼接,自动用原字典的键作为新DataFrame的列名。

容错处理(可选)

如果担心部分DataFrame没有'close'列,可以先过滤掉这类条目:

# 只保留含'close'列的DataFrame对应的列
new_df = pd.concat(
    {ticker: df['close'] for ticker, df in df_dict.items() if 'close' in df.columns},
    axis=1
)

示例演示

先构造一个测试用的DataFrame字典:

# 生成示例数据
df_spy = pd.DataFrame({'close': [450, 452, 448], 'open': [449, 451, 447]})
df_qqq = pd.DataFrame({'close': [380, 385, 382], 'open': [379, 384, 381]})
df_smh = pd.DataFrame({'close': [210, 215, 212], 'open': [209, 214, 211]})

df_dict = {'SPY': df_spy, 'QQQ': df_qqq, 'SMH': df_smh}

运行基础代码后,new_df的结构如下:

SPY  QQQ  SMH
0  450  380  210
1  452  385  215
2  448  382  212

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:49:58