From ff42a3ac87839647942237329586997a1020ef3e Mon Sep 17 00:00:00 2001 From: ValueRaider Date: Tue, 18 Oct 2022 12:22:43 +0100 Subject: [PATCH 1/2] Add 'ignore_tz' arg to download() --- README.md | 5 +++++ yfinance/multi.py | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c00dea3b..639a340b4 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,11 @@ data = yf.download( # or pdr.get_data_yahoo(... # (optional, default is '1d') interval = "1m", + # Whether to ignore timezone when aligning ticker data from + # different timezones. Default is True. False may be useful for + # minute/hourly data. + ignore_tz = False, + # group by ticker (to access via data['SPY']) # (optional, default is 'column') group_by = 'ticker', diff --git a/yfinance/multi.py b/yfinance/multi.py index 9a96848d8..f80adbb8c 100644 --- a/yfinance/multi.py +++ b/yfinance/multi.py @@ -29,7 +29,7 @@ from . import shared -def download(tickers, start=None, end=None, actions=False, threads=True, +def download(tickers, start=None, end=None, actions=False, threads=True, ignore_tz=True, group_by='column', auto_adjust=False, back_adjust=False, keepna=False, progress=True, period="max", show_errors=True, interval="1d", prepost=False, proxy=None, rounding=False, timeout=None, **kwargs): @@ -63,6 +63,9 @@ def download(tickers, start=None, end=None, actions=False, threads=True, Download dividend + stock splits data. Default is False threads: bool / int How many threads to use for mass downloading. Default is True + ignore_tz: bool + When combining from different timezones, ignore that part of datetime. + Default is True proxy: str Optional. Proxy server URL scheme. Default is None rounding: bool @@ -140,6 +143,11 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ticker = tickers[0] return shared._DFS[shared._ISINS.get(ticker, ticker)] + if ignore_tz: + for tkr in shared._DFS.keys(): + if not shared._DFS[tkr] is None: + shared._DFS[tkr].index = shared._DFS[tkr].index.tz_localize(None) + try: data = _pd.concat(shared._DFS.values(), axis=1, keys=shared._DFS.keys()) From 7902ec8667abc0bd91bd3b8be31e5eaec1e3a0fe Mon Sep 17 00:00:00 2001 From: ValueRaider Date: Tue, 18 Oct 2022 12:31:51 +0100 Subject: [PATCH 2/2] Fix empty-df detection and date ordering --- yfinance/multi.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yfinance/multi.py b/yfinance/multi.py index f80adbb8c..8795563c0 100644 --- a/yfinance/multi.py +++ b/yfinance/multi.py @@ -145,15 +145,15 @@ def download(tickers, start=None, end=None, actions=False, threads=True, ignore_ if ignore_tz: for tkr in shared._DFS.keys(): - if not shared._DFS[tkr] is None: + if (shared._DFS[tkr] is not None) and (shared._DFS[tkr].shape[0]>0): shared._DFS[tkr].index = shared._DFS[tkr].index.tz_localize(None) try: - data = _pd.concat(shared._DFS.values(), axis=1, + data = _pd.concat(shared._DFS.values(), axis=1, sort=True, keys=shared._DFS.keys()) except Exception: _realign_dfs() - data = _pd.concat(shared._DFS.values(), axis=1, + data = _pd.concat(shared._DFS.values(), axis=1, sort=True, keys=shared._DFS.keys()) # switch names back to isins if applicable