循环股票代码列表创建对应变量,实现PowerBI导入独立DataFrame
解决PowerBI中创建以股票代码命名的独立DataFrame问题
你当前的代码将所有股票数据存入字典dataset,但循环内的ticker = dataset[ticker]只是创建了循环内的局部变量,不会在全局作用域生成对应名称的DataFrame,所以PowerBI无法识别这些独立的数据集。
修改后的代码
import time import pandas as pd from datetime import date tickers = ['ATVI', 'AMD', 'ABNB','AIR','GOOGL','AMZN','AAPL','ERT.BE','EQIX','INTC','JPM','LPL','MC.PA','MSFT','NVDA','PKX','SSUN.BE','SFT.BE','SONY','SPOT','TSM','TSLA','HO.PA','UBI.PA','UBS','DIS'] today = int(time.mktime((date.today()).timetuple())) for ticker in tickers: # 读取雅虎财经股票数据 df = pd.read_csv(f'https://query1.finance.yahoo.com/v7/finance/download/{ticker}?period1=1670371200&period2={today}&interval=1d&events=history&includeAdjustedClose=true') # 添加股票代码标识列 df['ticker'] = ticker # 计算当日涨额 df['evolution'] = df['Close'] - df['Close'].shift(1) # 计算当日涨跌幅百分比 df['percentage'] = ((df['Close'] - df['Close'].shift(1))/df['Close'])*100 # 将DataFrame注册到全局命名空间,PowerBI会自动识别这些变量 globals()[ticker] = df
关键说明
- 通过
globals()[ticker] = df,直接在全局作用域创建以股票代码命名的DataFrame变量,PowerBI运行脚本后会自动检测到所有这些独立数据集 - 移除了原代码中多余的
dataset字典和pd.DataFrame(df)(df本身已是DataFrame类型) - 含特殊字符的股票代码(如
.BE、.PA)无需额外处理,PowerBI会正常识别对应的变量名 - 确保PowerBI的Python环境已安装
pandas库,否则会出现依赖报错
内容的提问来源于stack exchange,提问作者Maximilien Ollier
相关产品推荐
相关产品推荐

