[BugFix] openbb-yfinance: Fix Multi-Index Shape Change for Single Ticker Download (#7512)

* fix multi-index shape change for single ticker download

* lint

* black
This commit is contained in:
Danglewood
2026-05-25 22:07:44 -07:00
committed by GitHub
parent 186cbb068c
commit fa9729f4a0

View File

@@ -552,7 +552,14 @@ def yf_download( # pylint: disable=too-many-positional-arguments
tickers = symbol.split(",") tickers = symbol.split(",")
if len(tickers) == 1: if len(tickers) == 1:
data = data.get(symbol, DataFrame()) # type: ignore if hasattr(data.columns, "levels"):
try:
if symbol in data.columns.get_level_values(0):
data = data[symbol] # type: ignore
elif symbol in data.columns.get_level_values(1):
data = data.xs(symbol, level=1, axis=1) # type: ignore
except (KeyError, IndexError):
pass
elif len(tickers) > 1: elif len(tickers) > 1:
_data = DataFrame() _data = DataFrame()
for ticker in tickers: for ticker in tickers:
@@ -571,8 +578,11 @@ def yf_download( # pylint: disable=too-many-positional-arguments
if data.empty: # type: ignore if data.empty: # type: ignore
raise EmptyDataError() raise EmptyDataError()
if hasattr(data.columns, "levels") and len(data.columns.names) > 1:
data.columns = [col[0] if isinstance(col, tuple) else col for col in data.columns] # type: ignore
data = data.reset_index() # type: ignore data = data.reset_index() # type: ignore
data = data.rename(columns={"Date": "date", "Datetime": "date"}) data = data.rename(columns={"Date": "date", "Datetime": "date", "index": "date"})
data["date"] = data["date"].apply(to_datetime) data["date"] = data["date"].apply(to_datetime)
data = data[data["Open"] > 0] data = data[data["Open"] > 0]