从Yahoo Finance获取ESG数据时Python代码出现语法错误求助
解决Yahoo Finance ESG数据下载代码中的语法错误
你遇到的语法错误根源是**pd.DataFrame()语句缺少闭合的右括号**,导致后续代码的语法结构被破坏,编辑器误报在df["symbol"] = symbol行出错。
修正后的完整代码
import pandas as pd import yfinance as yf import time from random import randint import yesg import requests # 读取股票代码CSV nasdaq = pd.read_csv('/path/to/file.csv') # Yahoo Finance ESG数据接口 url = "https://query2.finance.yahoo.com/v1/finance/esgChart" # 存储各股票ESG数据的列表 dataframes = [] for symbol in nasdaq["Symbol"]: # 注意:需匹配CSV实际列名,原代码写的ticker_code需替换为Symbol response = requests.get(url, params={"symbol": symbol}) if response.ok: # 补全pd.DataFrame的闭合右括号 df = pd.DataFrame(response.json()["esgChart"]["result"][0]["symbolSeries"]) df["symbol"] = symbol dataframes.append(df) # 合并所有数据 df = pd.concat(dataframes) df["timestamp"] = pd.to_datetime(df["timestamp"], unit="s")
额外提示
- 确保遍历的列名和CSV中的
Symbol列一致,避免触发KeyError。 - 建议在循环中添加随机延迟(如
time.sleep(randint(1,3))),防止频繁请求触发Yahoo的反爬限制。
内容的提问来源于stack exchange,提问作者jrpars1
相关产品推荐
相关产品推荐

