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

如何将自定义股票代码列表加入维基百科获取的标普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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 08:08:18