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
相关产品推荐
相关产品推荐

