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

Python中如何将字典按对应键拆分为多个独立命名的DataFrame

实现拆分获得独立股票DataFrame的两种常用方案

方案1:爬取时直接存入字典(推荐,效率更高)

无需先合并所有数据再拆分,爬取过程中直接将单只股票的DataFrame存入字典即可,代码如下:

import pandas as pd
import yfinance as yf
import requests
import io

start = pd.to_datetime('01/01/2015').date()
end = pd.to_datetime('today').date()

url="https://pkgstore.datahub.io/core/nasdaq-listings/nasdaq-listed_csv/data/7665719fb51081ba0bd834fde71ce822/nasdaq-listed_csv.csv"
s = requests.get(url).content
companies = pd.read_csv(io.StringIO(s.decode('utf-8')))
Symbols = companies['Symbol'].tolist()

# 初始化存储各股票DataFrame的字典
stock_dict = {}

for idx, i in enumerate(Symbols[0:11]):  
    print(f"{idx} : {i}", sep=',', end=',', flush=True)  
    try:
        stock = yf.download(i,start=start, end=end, progress=False)
        if len(stock) > 0:
            stock['Name'] = i
            # 直接以股票代码为键存入字典
            stock_dict[i] = stock
    except Exception:
        pass

如果需要把字典里的DataFrame变成可直接调用的独立变量(比如直接输入AAL就能调用对应DataFrame),执行以下代码即可:

# 将字典键值对注入全局变量空间
for stock_code, df in stock_dict.items():
    # 可选:给变量加前缀避免和内置关键字重名,比如globals()[f'df_{stock_code}'] = df
    globals()[stock_code] = df

方案2:从已合并的总表拆分

如果你已经生成了合并后的stock_final总表,不需要重新爬取的话,直接用groupby拆分即可:

# 按股票代码分组后转成字典
stock_dict = dict(tuple(stock_final.groupby('Name')))

# 同样可以注入全局变量空间得到独立DataFrame
for stock_code, df in stock_dict.items():
    globals()[stock_code] = df

注意:不建议直接使用纯股票代码作为变量名,部分股票代码可能和Python内置关键字、保留字重名导致报错,推荐给变量增加统一前缀,比如df_AAIT、df_AAL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:06:03