下载日期范围的 yahoofinance 数据
downloading yahoofinance data for date ranges
我有一个包含 900 个代码的数据框,我正在尝试下载所述日期前 -15 个工作日到所述日期后 30 个工作日的调整后收盘价,总共约 9 周的数据。
date symbol date_start date_end
0 2020-03-20 USAU 2020-02-28 2020-05-01
1 2020-03-20 INLX 2020-02-28 2020-05-01
4 2020-03-20 SIML 2020-02-28 2020-05-01
6 2020-03-19 NLNK 2020-02-27 2020-04-30
7 2020-03-19 OMWS 2020-02-27 2020-04-30
9 2020-03-19 LUMO 2020-02-27 2020-04-30
11 2020-03-18 T.TO 2020-02-26 2020-04-29
12 2020-03-18 TU 2020-02-26 2020-04-29
15 2020-03-16 SUMR 2020-02-24 2020-04-27
17 2020-03-16 DTYS 2020-02-24 2020-04-27
我尝试使用 yahoo finance 的 -15/+30 阈值过滤开始日期和结束日期,但我一直返回 null。
我会尝试批量下载功能 df = yf.download(tickers = [list_of_tickers],...)
,但它需要明确的开始日期和结束日期,我不确定如何解决这个问题。它正在返回一个 pandas 数据帧,所以我不确定这是否是明确的问题。
我从文档中知道了这一点,但是那里没有解决我的问题的方法。:
下面是代码供集思广益,但我卡住了,不知道如何解决这个问题
data_stocks = []
for symbol in data_shortened['symbol']:
try:
placeholder = yf.download(symbol, data_shortened['start_date'], data_shortened['end_date'])
data_stocks.append(placeholder)
except:
print('Failed')
print(len(data_stocks))
感谢您的帮助。
您可以使用 iterrows
:
data_stocks = {}
for _, row in data_shortened.iterrows():
placeholder = yf.download(row['symbol'], row['date_start'], row['date_end'])
data_stocks[row['symbol']] = placeholder
stocks = pd.concat(data_stocks)
输出:
>>> stocks
Open High Low Close Adj Close Volume
Date
USAU 2020-02-27 7.1 7.5 6.5 6.9 6.9 23460.0
2020-02-28 6.5 6.8 6.0 6.3 6.3 22010.0
2020-03-02 6.5 6.6 6.0 6.1 6.1 7300.0
2020-03-03 6.4 6.5 6.0 6.5 6.5 9700.0
2020-03-04 6.5 7.0 6.1 7.0 7.0 13340.0
... ... ... ... ... ... ...
DTYS 2020-04-20 120.0 120.0 120.0 120.0 120.0 0.0
2020-04-21 120.0 120.0 120.0 120.0 120.0 0.0
2020-04-22 120.0 120.0 120.0 120.0 120.0 0.0
2020-04-23 120.0 120.0 120.0 120.0 120.0 0.0
2020-04-24 120.0 120.0 120.0 120.0 120.0 0.0
[358 rows x 6 columns]
我有一个包含 900 个代码的数据框,我正在尝试下载所述日期前 -15 个工作日到所述日期后 30 个工作日的调整后收盘价,总共约 9 周的数据。
date symbol date_start date_end
0 2020-03-20 USAU 2020-02-28 2020-05-01
1 2020-03-20 INLX 2020-02-28 2020-05-01
4 2020-03-20 SIML 2020-02-28 2020-05-01
6 2020-03-19 NLNK 2020-02-27 2020-04-30
7 2020-03-19 OMWS 2020-02-27 2020-04-30
9 2020-03-19 LUMO 2020-02-27 2020-04-30
11 2020-03-18 T.TO 2020-02-26 2020-04-29
12 2020-03-18 TU 2020-02-26 2020-04-29
15 2020-03-16 SUMR 2020-02-24 2020-04-27
17 2020-03-16 DTYS 2020-02-24 2020-04-27
我尝试使用 yahoo finance 的 -15/+30 阈值过滤开始日期和结束日期,但我一直返回 null。
我会尝试批量下载功能 df = yf.download(tickers = [list_of_tickers],...)
,但它需要明确的开始日期和结束日期,我不确定如何解决这个问题。它正在返回一个 pandas 数据帧,所以我不确定这是否是明确的问题。
我从文档中知道了这一点,但是那里没有解决我的问题的方法。:
下面是代码供集思广益,但我卡住了,不知道如何解决这个问题
data_stocks = []
for symbol in data_shortened['symbol']:
try:
placeholder = yf.download(symbol, data_shortened['start_date'], data_shortened['end_date'])
data_stocks.append(placeholder)
except:
print('Failed')
print(len(data_stocks))
感谢您的帮助。
您可以使用 iterrows
:
data_stocks = {}
for _, row in data_shortened.iterrows():
placeholder = yf.download(row['symbol'], row['date_start'], row['date_end'])
data_stocks[row['symbol']] = placeholder
stocks = pd.concat(data_stocks)
输出:
>>> stocks
Open High Low Close Adj Close Volume
Date
USAU 2020-02-27 7.1 7.5 6.5 6.9 6.9 23460.0
2020-02-28 6.5 6.8 6.0 6.3 6.3 22010.0
2020-03-02 6.5 6.6 6.0 6.1 6.1 7300.0
2020-03-03 6.4 6.5 6.0 6.5 6.5 9700.0
2020-03-04 6.5 7.0 6.1 7.0 7.0 13340.0
... ... ... ... ... ... ...
DTYS 2020-04-20 120.0 120.0 120.0 120.0 120.0 0.0
2020-04-21 120.0 120.0 120.0 120.0 120.0 0.0
2020-04-22 120.0 120.0 120.0 120.0 120.0 0.0
2020-04-23 120.0 120.0 120.0 120.0 120.0 0.0
2020-04-24 120.0 120.0 120.0 120.0 120.0 0.0
[358 rows x 6 columns]