0

我正在尝试从 yfinance API 中提取多个代码数据并将其保存到 csv 文件中(我总共有 1000 个代码需要获取数据,该数据是整个日期表,打开,高,低,关闭,音量等),到目前为止,我能够使用以下 Python 代码成功获取 1 个股票代码的数据:

import yfinance as yf

def yfinance(ticker_symbol):
    ticker_data = yf.Ticker(ticker_symbol)
    tickerDF = ticker_data.history(period='1d', start='2020-09-30', end='2020-10-31')
    
    print(tickerDF)

yfinance('000001.SS')

但是,如果我尝试使用多个代码,这将不起作用。遵循 yfinance 文档,其中提到多个代码使用:

tickers = yf.Tickers('msft aapl goog')
# ^ returns a named tuple of Ticker objects

# access each ticker using (example)
tickers.tickers.MSFT.info
tickers.tickers.AAPL.history(period="1mo")
tickers.tickers.GOOG.actions

我在这里有几个问题,文档使用诸如“aapl”之类的字符串,我的代码都是像“000001.SS”这样的数字格式,“.SS”部分在将其传递到代码中时被证明是一个问题:

tickers.tickers.000001.SS.history(period="1mo")
# Clearly this wont for for a start

我遇到的下一个问题是,即使我将例如 3 个代码传递给我的函数,如下所示:

yfinance('000001.SS 000050.KS 00006.KS')
# similar to yfinance docs of tickers = yf.Tickers('msft aapl goog')

我收到如下错误:

AttributeError: 'Tickers' object has no attribute '000001.SS'

(我也尝试将它们运行到一个 for 循环中并将每个传递给 Tickers 对象,但得到相同的错误。)

我现在卡住了,我不知道如何将多个代码传递给 yfinance 并取回我想要的数据,并且文档不是很有帮助。

有人能帮我解决这个问题吗?

4

1 回答 1

0

您能否将它们存储在指定类型为 dtype 对象的数组中,然后使用它从中提取数据。

import yfinance as yf
import numpy as np

tickers = ['msft', 'aapl', 'goog']

totalPortfolio = np.empty([len(tickers)], dtype=object)

num = 0
for ticker in tickers:
    totalPortfolio[num] = yf.download(ticker, start='2020-09-30', end='2020-10-31', interval="1d")
    num = num + 1
于 2020-12-13T02:46:21.903 回答