如何将自定义股票代码列表添加到从维基百科中抓取的现有标准普尔 500 股票代码列表中

How to add a custom list of stock tickers to an existing list of S&P 500 tickers scraped from wikipedia

提问人:GDoherty3 提问时间:11/13/2023 更新时间:11/13/2023 访问量:36

问:

我是Python的初学者,但是在这样的在线教程和论坛的帮助下,我能够编写以下代码,该代码提取了标准普尔500指数中所有名称/股票代码的最后一个月的定价数据,并将它们保存到单独的csv文件中。

我现在想增强这段代码,以继续提取标准普尔500指数的定价数据,但也将我自己的自定义股票代码列表添加到标准普尔500指数的股票代码中,并提取标准普尔500指数中所有股票的定价数据以及我的自定义列表。这个自定义列表是目前不在标准普尔500指数中的感兴趣的公司,如SHOP,RIVN,DDOG等,可能会随着时间的推移而变化,但不会经常变化。

import os
import pandas as pd
import yfinance as yf
import datetime

S_AND_P_URL = 'https://en.wikipedia.org/wiki/List_of_S%26P_500_companies'


def get_ticker_data(tickers: list):
    '''
    Obtain the price data for all tickers specified. Creates a csv file of price data for each
    ticker in the data folder.

    Parameters
    ----------
    tickers : list
        A list of the tickers to download the data for
    '''

    data = yf.download(
        tickers = tickers,
        period = '1mo',
        interval = '1d',
        #start = "2023-02-24", #20 days of data
        #end = "2023-03-23", #previous close
        group_by = 'ticker',
        threads = True,
    )
    for ticker in tickers:
        try:
            df = data.loc[:, ticker.upper()].dropna()
            df.to_csv(f'data/{ticker}.csv', index = True)
        except:
            print(f'Ticker {ticker} failed to download.')

    return

def get_s_and_p_tickers() -> list:
    '''
    Get a list of all tickers currently in the S&P 500 index.
    '''
    return pd.read_html(S_AND_P_URL)[0]['Symbol'].tolist()


if __name__ == '__main__':

    # Check if a directory exists called 'data', if not, create it
    if not os.path.isdir('data'):
        os.mkdir('data')

    # Download one csv file per ticker and place it in the data directory
    get_ticker_data(get_s_and_p_tickers())

我尝试在“def get_s_and_p_tickers()”块下方添加.append或.extend行,但没有成功。

我想从wikipidia中提取标准普尔500指数的股票代码列表,然后从我的自定义列表中提取,并继续为每个股票代码下载一个csv文件,并将它们放在我拥有的数据目录中。因此,保留已经有效的相同过程,但只是添加第二个代码数据源/列表以下载 csv 文件。

任何建议/帮助将不胜感激。谢谢!

python-3.x 列表 追加

评论

0赞 tripleee 11/13/2023
你没有向我们展示你尝试过的东西,所以我们无法告诉你你的尝试出了什么问题。
0赞 diarmuid 11/15/2023
@tripleee请重新考虑您的反对票,因为发帖人确实说了他们尝试过的内容“我尝试在”def get_s_and_p_tickers()“块下方添加一个 .append 或 .extend 行”,公平地说,这与我提供给他们的解决方案非常接近

答:

0赞 diarmuid 11/13/2023 #1

您描述的方法应该有效。尝试替换代码的最后一行

get_ticker_data(get_s_and_p_tickers())

ticker_list = get_s_and_p_tickers()
ticker_list += [ ... my own list ..] 
get_ticker_data(ticker_list)

评论

0赞 GDoherty3 11/14/2023
这有效,谢谢!
0赞 diarmuid 11/15/2023
好的,很高兴能提供一些帮助 - 你能把答案标记为正确吗?-谢谢!