如何将自定义股票代码列表加入维基百科获取的标普500代码列表
解决方案
核心问题排查
你用append/extend失败大概率是因为从维基百科获取的标普500代码不是普通Python列表,而是pandas的Series/DataFrame列对象,直接用列表方法会报错。下面是针对性的修改方案:
完整代码修改示例
假设你原本的代码基于pandas和yfinance实现,我会在关键位置加入自定义列表合并逻辑:
import pandas as pd import yfinance as yf from datetime import datetime, timedelta # 1. 从维基百科获取标普500股票代码并转为普通列表 sp500_table = pd.read_html('https://en.wikipedia.org/wiki/List_of_S%26P_500_companies')[0] sp500_tickers = sp500_table['Symbol'].tolist() # 2. 定义自定义股票代码列表 custom_tickers = ['SHOP', 'RIVN', 'DDOG'] # 3. 合并两个列表并去重(避免重复下载同一股票) # 方式1:用set去重(不保留原顺序) all_tickers = list(set(sp500_tickers + custom_tickers)) # 方式2:用pandas去重(保留原顺序) # all_tickers = pd.Series(sp500_tickers + custom_tickers).drop_duplicates().tolist() # 4. 设置近1个月的时间范围 end_date = datetime.now() start_date = end_date - timedelta(days=30) # 5. 遍历所有代码下载股价并保存为CSV for ticker in all_tickers: try: data = yf.download(ticker, start=start_date, end=end_date) data.to_csv(f'{ticker}_monthly_data.csv') print(f'已保存 {ticker} 的数据') except Exception as e: print(f'{ticker} 下载失败: {str(e)}')
关键修改点说明
- 用
.tolist()把标普500的代码列转为普通列表,确保能和自定义列表直接合并 - 用
+直接拼接两个列表,再通过set()或pandas的drop_duplicates()去重 - 加入
try-except捕获异常,避免单个股票下载失败导致整个程序中断
内容的提问来源于stack exchange,提问作者GDoherty3
相关产品推荐
相关产品推荐

